繁体   English   中英

ZCCADCDEDB567ABAE643E15DCF0974E503Z 文档以点表示法返回“未定义”

[英]Mongoose document returns “undefined” in dot notation

我有一个 MongoDB 文档,当以点表示法引用时,该文档将某些值返回为undefinednull

这是文档的结构:

{
    "id": "1",
    "version": "1.0.0",
    "categories": [], // Array of Category Objects
    "bypass": [] // Array of Strings
}

我正在使用 Mongoose 如下: Model.findOne({ id: "1" }, { _id: 0 })成功返回文档,但是,使用点符号提取特定元素或将它们分配给变量会导致某些元素响应为 null 或未定义。

例如,如果我返回的文档存储在doc中, doc.categories将返回我创建的类别对象的完整数组[] doc.version返回1.0.0

但是,当我尝试doc.bypass时,我得到undefined 如果我尝试doc.id我得到null

有谁知道发生了什么?

代码编辑:

const doc = await Model.findOne({ id: "1" }, { _id: 0 });

console.log(doc); // Contains all document data including bypass with its Array of Strings
console.log(doc.bypass); // undefined

返回:

{
    id: '1',
    version: '1.0.0',
    categories: [
        {
            name: 'Category 1',
            id: '1111',
            active: true,
            children: [Array]
        },
        {
            name: 'Category 2',
            id: '2222',
            active: true,
            children: [Array]
        },
        {
            name: 'Category 3',
            id: '3333',
            active: true,
            children: [Array]
        },
        {
            name: 'Category 4',
            id: '4444',
            active: true,
            children: [Array]
        }
    ],
    bypass: [ '123', '456', '78', '90' ]
}
undefined

看看上面的内容,它应该可以工作 - 所以它更多的是关于你如何设置你的 model 的问题 - 作为参考,我已经把工作的 model 放在下面,请对照我的例子检查它,看看你的是否符合:

 const mongoose = require('mongoose')
const validator = require('validator')

const Task = mongoose.model('Task', {
    description: {
        type: String, 
        trim: true,
        required: true
        },
    completed: {
        type: Boolean,
        default: false
        }
})

module.exports = Task

如果它符合这个并且您仍然遇到问题,我可以要求您在上面的代码中发布您的 model 吗?

谢谢-W

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM