node.js - 如何保存数组?

标签 node.js express sequelize.js

如何保存数组?如果我以这种形式接收和发送数据?

(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)

当我尝试保存时,出现这样的错误:

a null value in the order_name column violates the NOT NULL constraint

Controller :

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);
    }
}

最佳答案

您的req.body是一个对象数组,而不仅仅是对象,因此您需要直接在bulkCreate函数中使用req.body,因为该属性也直接与模型属性匹配。目前,您正在尝试访问 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);
  }
}

关于node.js - 如何保存数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60375277/

相关文章:

javascript - “await”在异步函数中不起作用

node.js - Node.js 上的多域路由和 SSL

node.js - Vue.js 抛出多个警告 : Invalid prop: type check failed for prop "items". 预期数组,得到值为 ""的字符串

mysql - 如何在 sequelize 和 express js 中使用数组

javascript - 浏览器支持模块导入,我该如何使用它?

javascript - multer:保留原始图像文件名

node.js - 为什么会发生这个错误? Node 错误 : write EIO

node.js - 如何在 PostgreSQL GEOMETRY 字段上创建空间索引?

javascript - 使用 Sequelize 按相关关键字查找所有图像,并包含要包含/排除的关键字 ID 值数组

node.js - Mongoose 版本错误且未找到 id 的匹配文档