文档上的猫鼬模式数组属性不断变化

时间:2019-01-23 18:50:14

标签: node.js mongodb express mongoose

我有一个像这样的Mongoose模式:

let mySchema = new Schema ({
    _myArray: [{
        type: String,
        required: true
    }]
})

我能够使用数组中的单个值成功创建和更新文档。

await req.mySchema.update(req.body);

但是奇怪的是_myArray上的req.body是未定义的。相反,当数组中只有一个字符串时,它看起来像这样:

{
    '_myArray[]': "foo"
}

当数组中有多个字符串时,如下所示:

{
    '_myArray[]': ["foo", "bar"]
}

如果我想更新_myArray,则需要对文档进行操作,以使_myArray属性存在。

req.body._myArray = req.body['_myArray[]']
await req.mySchema.update(req.body);

为什么文档属性名称从_myArray更改为_myArray[]

如何在不手动操作文档以添加回正确属性_myArray的情况下将字符串数组保存到文档中?

1 个答案:

答案 0 :(得分:0)

这不是Mongoose的问题,而是Express的解析问题。

解决方案是使用extended设置为TRUE的bodyParser。

app.use(bodyParser.urlencoded({ extended: true }));

Express Parsing Array from POST