如何查询猫鼬的返回值

时间:2019-05-11 23:57:52

标签: javascript node.js object 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),但它仍然返回相同的错误,不是一个功能。

1 个答案:

答案 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
});