无法从mongoose的find方法的结果中检索数据

时间:2012-06-18 13:20:50

标签: node.js mongodb mongoose

我想从mongoose的find方法的结果中获取数据。

SinceIdLog.find({},['since_id','saved_date'],{sort:{'saved_date': -1}, limit:1}, function(err, docs) {
    console.log(docs[0]);
    // some processes
});

在这种情况下'console.log'的输出就是我想要的内容。

{ since_id: '214320642386968576',
  saved_date: Sun, 17 Jun 2012 13:16:04 GMT,
  _id: 4fddd8941390b38712000143 }

但是,当我写下面的时候

SinceIdLog.find({},['since_id','saved_date'],{sort:{'saved_date': -1}, limit:1}, function(err, docs) {
    console.log(docs[0].since_id);
    // some processes
});

输出是'未经分类的'。

你知道为什么吗?

我在MongoDB中保存了Twitter API参数的'since_id'。

在此代码中,我想让since_id检索使用OAuth新更新的推文。

此致

4 个答案:

答案 0 :(得分:0)

]声明中since_id之后移除无关的console.log

答案 1 :(得分:0)

也许你有since_id字段的getter函数,它不会返回任何内容?检查架构。

答案 2 :(得分:0)

我曾遇到同样的问题,我认为解析结果有帮助。

尝试以下

SinceIdLog.find({},['since_id','saved_date'],{sort:{'saved_date': -1}, limit:1}, function(err, docs) {
    docs = JSON.parse(docs);
    console.log(docs[0].since_id);
    // some processes
});

答案 3 :(得分:0)

谢谢大家,

我找到了原因。

我没有正确定义Schema,如下面的

var Schema = mongoose.Schema,
SinceIdLog = mongoose.model('SinceIdLog', new Schema());

这在保存数据时有效。

var XXX = new SinceIdLog(Object);
XXX.save(function(err) {});

但它在寻找方面效果不佳。

我修改了它,现在它正常工作。

var Schema = mongoose.Schema,
SinceIdLog = new Schema({
    since_id: String,
    saved_date: Date
}),
SinceIdSchema = mongoose.model('SinceIdLog', SinceIdLog);

谢谢!