Как сохранить массив? - PullRequest
       22

Как сохранить массив?

1 голос
/ 24 февраля 2020

Как сохранить массив? Если я получаю и отправляю данные в этой форме?

(3) [{…}, {…}, {…}]
0: {order_name: "sd", cost: 12, quantity: 1}
1: {order_name: "sd", cost: 12, quantity: 1}
2: {order_name: "sd", cost: 12, quantity: 1}
length: 3
__proto__: Array(0)

Когда я пытаюсь сохранить, я получаю такую ​​ошибку:

нулевое значение в столбце order_name нарушает NOT Ограничение NULL

контроллер:

module.exports.create = async function (req, res) {
    try {
        const order = await Order.bulkCreate([{
            order_name: req.body.order_name,
            quantity: req.body.quantity,
            cost: req.body.cost,
            date: new Date(),
            users_id: req.decoded.user_id
        }]);
        res.status(201).json(order);
    } catch (e) {
        errorHandler(res, e);
    }
}

1 Ответ

0 голосов
/ 24 февраля 2020

You req.body - это массив объектов, а не только объектов, поэтому вам нужно использовать req.body непосредственно в функции bulkCreate, так как свойство также напрямую соответствует свойству модели. В настоящее время вы пытаетесь получить доступ к req.body.order_name, который будет неопределенным, поскольку req.body является массивом. Чтобы исправить код, вам нужно сделать следующее:

module.exports.create = async function(req, res) {
  try {
    const order = await Order.bulkCreate(req.body);
    res.status(201).json(order);
  } catch (e) {
    errorHandler(res, e);
  }
}

Просто убедитесь, что вы проверяете полезную нагрузку и значения свойств в соответствии с вашими требованиями, прежде чем массово создавать документы.

Если вы хотите добавить некоторые другие свойства из кода бэкэнда:

module.exports.create = async function(req, res) {
  let createArray = req.body.map((obj) => {
    obj.date = new Date(),
    obj.user_id: req.decoded.user_id
  });
  try {
    const order = await Order.bulkCreate(createArray);
    res.status(201).json(order);
  } catch (e) {
    errorHandler(res, e);
  }
}
...