mongodb的Dog.find()Dog.create()前执行前执行mongodb的Dog.find()被Dog.create()
我只是有一些问题,我无法理解的为什么它发生。 我刚开始用在线教程学习mongodb。我在cloud9练习我的代码。 我正在练习find()和create()等基本查询。 我添加了Dog.create()方法,首先添加一个只带名称参数的新狗,随后在create()方法下添加Dog.find()来查找数据库中的所有数据。
但问题是Dog.find()首先执行并且Dog.create最后执行。
我已经发布了下面的代码。
var mongoose= require("mongoose");
mongoose.connect("mongodb://localhost/dog_app");
var dogSchema = new mongoose.Schema({
name:String
});
var Dog = mongoose.model("Dog", dogSchema);
Dog.create({
name:"duppy"
}, function(err, dog){
if(err){
console.log(err);
}else{
console.log("created a new dog");
console.log(dog);
}
});
Dog.find({}, function(err , dogs){
if(err){
console.log(err);
} else{
console.log("retrived from database");
console.log(dogs);
}
});
结果
adi188288:~/workspace/IntroToNode/Databases $ node dogs.js
(node:7113) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/connections.html#use-mongo-client
retrived from database
[ { _id: 59bd6256bffba3198bce7e87, name: 'Puppy', __v: 0 } ]
created a new dog
{ __v: 0, name: 'Puppy2', _id: 59bd6932a2d4c81bc9488b74 }
你可以看到,第一个find方法正在执行的结果,然后创建方法occurs.Can谁能解释这样对我?
Mongoose方法返回承诺,使用它们而不是回调。 – alexmac
非常感谢你@Farid Nouri Neshat。并且肯定会在mongoose @ alexmac上签出承诺方法。谢谢你们俩 –