mongoose承诺和回调函数输入

时间:2017-12-22 23:58:58

标签: javascript mongoose

我已经完成了一些关于回调函数和承诺的基础工作。但是当我看到以下代码时,我真的无法找到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);
    });
});

1 个答案:

答案 0 :(得分:0)

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

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

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