猫鼬返回数组值作为“未定义”

时间:2020-06-22 15:05:45

标签: node.js mongodb mongoose

关于准备将我的笔记本电脑飞盘进入石膏板。

我有一个包含多个不同对象和数组的Mongo文档。感兴趣的主要对象是categories对象数组和bypass字符串数组。

我正在使用model.findOne()成功获取文档。文档的值存储在res变量中,并且console.log(res)显示正确的值且没有错误。我什至可以查看categoriesbypass元素的内容。

当我将res.categories分配给变量时,不会发生任何错误。哇,分配的基础工作正常。

当我将res.bypass分配给变量时(紧接上述分配之后),即使我看到包含字符串数组的undefined的内容为,变量值也是res.bypass设计。

res.bypass的结构为bypass: [ '123', '456', '78', '90' ]。将该值分配给变量会将其设置为undefined

我在这里想念什么吗?我是否不允许拍摄一个文档并将其不同元素分配给不同的变量?

编辑1:

代码段请求:

await Api.findOne({ id: '1' }).then(async (doc) => {

    console.log(doc.categories) // Categories Array of Objects
    console.log(doc.bypass) // Bypass Array of Strings

    const categories = doc.categories // Value is categories Array of Objects
    const bypass = doc.bypass // Value is undefined
    ...
})

1 个答案:

答案 0 :(得分:1)

无需将promise回调包装在async函数中,也无需对等待的promise使用then处理程序。您应该将其更改为:

const doc = await Api.findOne({ id: '1' });

console.log(doc.categories) // Categories Array of Objects
console.log(doc.bypass) // Bypass Array of Strings

const categories = doc.categories // Value is categories Array of Objects
const bypass = doc.bypass // Value is undefined