我想使用mongoose js创建一个带有此文档的小猫集合{name:“mike”}。
创建此文档后,我想打印它的值。
我在下面写了这段代码。
2个问题:
这段代码没有结束(意思是当我写node file.js
时,cmd行保持打开(被卡住)并且没有返回值返回(无限循环就像在服务器中一样)。
代码不会打印“mike”的值。只需创建这个doucument ...
我做错了什么?
感谢
var mongoose = require('mongoose');
var url = 'mongodb://Yotam:Yotam@ds023475.mlab.com:23475/small-talkz';
mongoose.connect(url);
var kittySchema = mongoose.Schema({
name: String
});
var Kitten = mongoose.model('kitten', kittySchema);
Kitten.create({ name: "mike" }, function (err, small) {
if (err) return handleError(err);
});
Kitten.findOne( { } ), function(err, docs){
console.log(docs.name);
};
return 1;
答案 0 :(得分:1)
newKitten = { name: "mike" };
Kitten.create(newKitten, function (err, kitty) {
if {
(err) return handleError(err);
} else {
console.log(kitty); //OR console.log(kitty.name);
}
});
Kitten.findOne({name: "mike"}).exec(function(e, kitten) {
if (e) {
console.log(e)
} else {
console.log(kitten.name)
}
});
答案 1 :(得分:0)
问题是{对于任何有兴趣(并感谢herkou)}的人我没有使用exec命令..
这有效:
Kitten.findOne( { name: "mike"} ).exec( function(err, docs){
console.log(docs.name);
return;
});
更新
还有一个有竞争条件的问题......在调用查询时,documnet的创建没有完成。这就是为什么我得到了不必要的。
使用这个新代码:
var mongoose = require('mongoose');
var url = 'mongodb://Yotam:Yotam@ds023475.mlab.com:23475/small-talkz';
mongoose.connect(url);
var kittySchema = mongoose.Schema({
name: String,
color:String
});
var Kitten = mongoose.model('Kitten', kittySchema);
var newKitten = { name: "mike", color:"white" };
Kitten.create(newKitten, function (err, kitty) {
if (err) {
return handleError(err);
} else {
call_query();
}
});
var call_query= function(){
var query= Kitten.findOne( { name: "mike"} );
query.exec( function(err, docs){
console.log(docs.color);
return;
});
}
return 1;
现在我只需要了解为什么这个脚本不会结束。