gpt4 book ai didi

javascript - 如何从 Mongoose 查询回调中访问特定值?

转载 作者:可可西里 更新时间:2023-11-01 09:12:27 26 4
gpt4 key购买 nike

先简单介绍一下情况。我有一个装满文档的 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)。

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

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(result) 表示“对象”。

根据请求更新我的非严格模式导致 Mongoose 返回一个非真实的 javascript 对象。因此,为了将来引用,这里是我使用的“架构”:

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

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

最佳答案

当您使用未定义的架构时,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
})

关于javascript - 如何从 Mongoose 查询回调中访问特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com