如何从mongoose查询回调中访问特定值?

 地之南_816 发布于 2023-02-08 17:28

首先介绍一下这种情况.我有一个填充文档的MongoDB集合.我使用schema.statics来查询特定的行

TweetSchema.statics.maxAndLimit = function(screen_name, cb) {
  this.find({
    'user.screen_name': screen_name
  }).sort({'id_str':1}).select({'id_str':1,'user.statuses_count':1,'user.screen_name':1,'_id':0}).limit(1).exec(cb);
};

查询完成后,它将调用回调(cb).

在回调中,我想将值绑定到变量,以便稍后使用它们.这是我似乎无法解决的问题:

console.log(result) == [{id_str:'12346875',user:{statuses_count:500,screen_name:'username'}}]

console.log(result.id_str) == 'undefined'

同样适用于:

console.log(result[0].id_str)

为什么我得不到具体的价值?typeof(结果)表示'对象'.

每个请求更新 我的非严格模式导致Mongoose返回非真实的javascript对象.因此,为了将来参考,我使用的是'schema':

var TweetSchema = new Schema({}, {strict: false});

我不想定义所有内容,因为它是Twitter时间轴对象,因此并不总是相同.

1 个回答
  • 当您使用未定义的架构时,find的json输出无法像真正的javascript对象那样处理.使用toObject()来转换它,你就可以像使用任何其他对象一样使用它,你可以在这里看到区别:

    var Model = mongoose.model('Model', new mongoose.Schema({}))
    Model.find({user_id: '1234'}, function(err, obj) {   
        console.log(obj[0].user_id)  // undefined                   
        console.log(obj[0].toObject().user_id)  // 1234     
    })
    

    要么:

    var Model = mongoose.model('Model', new mongoose.Schema({
        user_id: String,
    }))
    Model.find({user_id: '1234'}, function(err, obj) {                      
        console.log(obj[0].user_id)  // 1234          
        console.log(obj[0].toObject().user_id)  // 1234
    })
    

    2023-02-08 17:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有