我已经完成了一些关于回调函数和承诺的基础工作。但是当我看到以下代码时,我真的无法找到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);
});
});
答案 0 :(得分:0)
由于save()方法是异步的,它返回一个Promise,并将它链接到你输入回调函数的then()方法并传递给它'zzz'参数。
'zzz'是您保存的newDish对象。
您可以在任何情况下使用find({})。exec()来查找数据库中的所有对象并使用结果执行回调。