我正在尝试查询从猫鼬回调函数返回的值,但我得到的只是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)
,但它仍然返回相同的错误,不是一个功能。
答案 0 :(得分:1)
suc
将是发生错误的结果数组,这意味着如果调用find
,您将得到Array.prototype.find而不是猫鼬查找。
如果您实际上想调用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');
}
如果您要呼叫find
来获得猫鼬,则必须在架构上对其进行定义
User.method('find', function () {
// do something
});