猫鼬:试图将嵌套对象字段设置为原始值“ null”

时间:2019-12-02 15:09:35

标签: node.js mongodb mongoose

我有一个带有嵌套字段的架构,例如

// model.js
module.exports = Mongoose.model('Model', new Mongoose.Schema(
    {
        Top: {
            Middle: {
                Bottom: Number
            }
        }
    },
    {
        strict: 'throw'
    })
)

所有这些字段都存在是非常罕见的,并且当一个字段不存在时,生成它的进程将写入null。我想将严格模式设置为true,但似乎不应该在应包含对象的字段包含null的情况下:

// app.js
const Model = require('./model');
router.post('/api' , async (req, res) => {
    const doc = new Model(req.body);
    const result = await doc.save();
    res.json(result);
})

// test
axios.post('/api', { Top: { Middle: null }})
=> ObjectExpectedError: Tried to set nested object field 'Middle' to primitive value 'null' and strict mode is set to throw.

有什么办法可以规避这种行为?不幸的是,让生成数据的过程产生undefined而不是null并不是一个简单的选择。

0 个答案:

没有答案