gpt4 book ai didi

javascript - 如何查询 mongoose 返回值

转载 作者:行者123 更新时间:2023-12-02 23:40:40 26 4
gpt4 key购买 nike

我试图查询从 Mongoose 回调函数返回的值,但我得到的只是 TypeError: #<Object> is not a function 。我知道做到这一点可能并不容易,但是通过查询数据库的方式,我需要更深入地了解返回的结果,而不必真正调用 User再次模型。不知道有没有办法解决这个问题。

 User.findOne({_id: req.user.id}, function(err,user){
if(err){
console.log(err);
} else {
if(user.plan == 'hit'){
User.find({plan: 'hit', verified: 'yes'}).lean().exec(function(error,*suc*){
if(suc.length < 1){
console.log(error);
console.log('no user')
} else {
console.log(suc)

**Error throws up right below here**

*suc*.find({admintit: 'admin', adminLimit: 200, admincycle: 0}, function(errok,hungad){
if(errok){
console.log(err)
} else {
if(hungad.length < 1){
console.log('no hung admin');
} else {
console.log(hungad)
}
}
})
}
})
}
}
})

确实尝试查询suc回调结果,但得到的只是一个错误,我尝试将其转换为对象 Object.assign({}, suc)但它仍然返回相同的错误,它不是一个函数。

最佳答案

suc 将是发生错误的结果数组,这意味着如果您调用 find 您将得到 Array.prototype.find而不是 Mongoose 找到的。

如果您确实想调用 Array.prototype.find假设该对象看起来像:

const suc = [{admintit: 'admin', adminLimit: 200, admincycle: 0}, ...]

您应该将其更改为:

const admin = suc.find(result => result.admintit === 'admin' && result.adminLimit === 200 && result.admincycle === 0)
if (admin) {
console.log(admin)
} else {
console.log('no hung admin');
}

如果您想查找所有内容,可以将 find 更改为 filter:

const admins = suc.filter(result => result.admintit === 'admin' && result.adminLimit === 200 && result.admincycle === 0)
if (admins.length > 0) {
console.log(admins)
} else {
console.log('no hung admin');
}

如果您想为 Mongoose 调用find,那么您必须在架构上定义它

User.method('find', function () {
// do something
});

关于javascript - 如何查询 mongoose 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56095157/

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