关于准备将我的笔记本电脑飞盘进入石膏板。
我有一个包含多个不同对象和数组的Mongo文档。感兴趣的主要对象是categories
对象数组和bypass
字符串数组。
我正在使用model.findOne()
成功获取文档。文档的值存储在res
变量中,并且console.log(res)
显示正确的值且没有错误。我什至可以查看categories
和bypass
元素的内容。
当我将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
...
})
答案 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