我有一个像这样的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
的情况下将字符串数组保存到文档中?
答案 0 :(得分:0)
这不是Mongoose的问题,而是Express的解析问题。
解决方案是使用extended
设置为TRUE
的bodyParser。
app.use(bodyParser.urlencoded({ extended: true }));