mongoose js不会打印出查询值

时间:2016-07-26 19:32:21

标签: javascript node.js mongodb mongoose

我想使用mongoose js创建一个带有此文档的小猫集合{name:“mike”}。

创建此文档后,我想打印它的值。

我在下面写了这段代码。

2个问题:

  1. 这段代码没有结束(意思是当我写node file.js时,cmd行保持打开(被卡住)并且没有返回值返回(无限循环就像在服务器中一样)。

    < / LI>
  2. 代码不会打印“mike”的值。只需创建这个doucument ...

  3. 我做错了什么?

    感谢

    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;
    

2 个答案:

答案 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;

现在我只需要了解为什么这个脚本不会结束。