MongoDb findOne 结果属性未定义

Posted

技术标签:

【中文标题】MongoDb findOne 结果属性未定义【英文标题】:MongoDb findOne result property is undefined 【发布时间】:2021-09-04 11:18:32 【问题描述】:

我在模型中使用 findOne,它会返回响应。

    const findAccount = await this.accountModel.findOne(
        _id: ObjectId(param.accountId),
    );
     
    console.log(findAccount);
    //The above logs the data
    console.log(findAccount.role, findAccount._id);
    //As for this, findAccount.role is undefined, but the findAccount._id was logged.

可能是什么原因?

【问题讨论】:

你能展示你的模型吗? 【参考方案1】:

findOne 方法返回一个 Mongoose 文档的实例,这可能会导致这样的情况。要获取 javascript 纯对象,您可以使用 lean() method。试试这个:

    const findAccount = await this.accountModel.findOne(
        _id: ObjectId(param.accountId),
    ).lean();
     
    console.log(findAccount);
    //The above logs the data
    console.log(findAccount.role, findAccount._id);
   

【讨论】:

以上是关于MongoDb findOne 结果属性未定义的主要内容,如果未能解决你的问题,请参考以下文章

无法读取未定义的属性“findOne” - Vue.js、Apollo Server、GraphQL 错误

无法读取未定义和未处理的承诺拒绝的属性“捕获”

如何使用 MongoDB 聚合 `$lookup` 作为 `findOne()`

Firefox 4 中的 JQuery 未定义和 $ 未定义错误 [关闭]

具有未定义和空值的排序对象数组

Sails js findOne()返回结果,尽管不满足所有条件