如何保存数组?如果我以这种形式接收和发送数据?
(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/