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上籤出承諾方法。謝謝你們倆 –