mongoose承诺和回调函数输入

问题描述 投票:0回答:1

我已经完成了一些关于回调函数和承诺的基础工作。但是当我看到以下代码时,我真的找不到zzz术语的来源。

我认为(zzz)将成为回调函数的输入。在回调函数中,从未定义过zzz。

return Dishes.find({}).exec()只是执行,什么都不返回。即使它返回一些东西,它也会输出回调函数而不是输入,即(zzz)。

对不起,如果问题是愚蠢的,我只是看了这个点2个小时,无法弄清楚...谢谢

const mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
const Dishes = require('./models/dishes');
const url = 'mongodb://localhost:27017/conFusion';
const connect = mongoose.connect(url, {
    useMongoClient: true
});
connect.then((db) => {
    console.log('Connected correctly to server');
    var newDish = Dishes({
        name: 'Uthappizza',
        description: 'test'
    });
    newDish.save()
    .then((zzz) => {
        // ??? where did this zzz come from ??????????????????????????????????????????????
        console.log(zzz);
        return Dishes.find({}).exec();
    })
    .then((xxx) => {
        console.log(xxx);       
        return db.collection('dishes').drop();
    })
    .then(() => {
        return db.close();
    })
    .catch((err) => {
        console.log(err);
    });
});
javascript mongoose
1个回答
0
投票

由于save()方法是异步的,它返回一个Promise,并将它链接到您输入回调函数的then()方法并将其传递给'zzz'参数。

'zzz'是您保存的newDish对象。

您可以在任何情况下使用find({})。exec()来查找数据库中的所有对象并使用结果执行回调。

© www.soinside.com 2019 - 2024. All rights reserved.