Свойство массива схемы Mongoose в документе постоянно изменяется - PullRequest
0 голосов
/ 23 января 2019

У меня есть схема 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 голосов
/ 24 января 2019

Это не проблема с Mongoose, это проблема синтаксического анализа с Express.

Решением является использование bodyParser с extended, установленным на TRUE.

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

Массив экспресс-анализа из POST

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...