使用sequelize,我试图更新嵌套属性但没有成功:
const Product = sequelize.define('product', {
title: { type: Sequelize.STRING },
color: { type: Sequelize.STRING },
});
const User = sequelize.define('user', {
name: { type: Sequelize.STRING },
});
Product.belongsTo(User);
User.hasMany(Product);
// create some data
await User.create({
name: 'foo',
products:[
{ title: 'prod1', color:'blue' },
{ title: 'prod2', color:'red' },
]
},
{ include: [ Product ] }
);
// query data
var data = await sequelize.models.user.findOne({
where: { name:'foo' },
include: [ Product ]
});
// update data
data.products[0].color = 'green';
await data.save();
// result
var data = await sequelize.models.user.findAll({
include: [ Product ]
});
此处,产品颜色仍为蓝色。 我想知道出了什么问题
EDIT1: 我需要从模型的“根”更新,因为数据更新来自JSON结构,包含模型的数据是此结构的一部分
答案 0 :(得分:3)
您需要在update
型号的实例上调用product
:
await data.products[0].update({
color: 'some other color'
});
现在,您只是更改findOne
返回的对象的值。当您致电save
时,模型实例不知道您更改了任何值。