0

我试图从我的 mongodb 返回一个声明数组,但是当我使用它返回未定义的函数时,我怎样才能将结果作为数组返回?

我一直在stackoverflow中寻找很多关于这个的问题,但没有一个有效..所以请不要向我推荐另一个问题,我看到每件事都有可能搜索了10多个组合来回答这个问题..

module.exports = {
    getAllClaims: (userId)=>{

        let claims;
          Claim.find({'sender':userId}, function (err, docs) {
            if(err){
                claims = []
                console.log(err)
            }
            if(docs)
            {
                claims = docs;
                console.log('CLAIMS FOUND:',docs)
            }


        });
        return claims;
    }
}

当我使用它时它返回 undefined 我已经在我的集合中检查过有一个带有该 id 的声明,那么为什么它返回一个 undefined ?

console.log(getAllClaims(55166212)) // undefined 

这是我的架构:

const mongoose = require('mongoose')

const Schema = mongoose.Schema

const claimSchema = new Schema({
    sender: Number,
    title: String,
    content: String,
    status:Number, // 0 unreaded,1 in process 2 completed.
    date: Date
})

module.exports = mongoose.model('claim', claimSchema, 'claims')

我也一直在尝试,但是它返回一个空数组,但是当我登录有趣的文档时,找到了文档,那为什么它不返回呢?

var cls = [];
          Claim.find({'sender':userId}, function (err, docs) {
            if(err){
                //claims = []
                console.log(err)
            }
            if(docs)
            {
                docs.forEach(doc=>{
                    cls.push(doc)
                    console.log('DOC IS: ',doc)
                })
            }


        });
        return cls;
4

1 回答 1

0

在 getAllClaims 中返回 find 承诺并与 then 一起使用。

return Claim.find({'sender':userId})

@

getAllClaims(userId).then(res => {
console.log(res);
})
于 2020-01-10T00:19:13.773 回答