[英]sequelize.js deep save model instance
使用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结构,并且所包含模型的数据是该结构的一部分
您需要在product
模型的实例上调用update
:
await data.products[0].update({
color: 'some other color'
});
现在,您只是在更改findOne
返回的对象的值。 当您调用save
,模型实例不知道您已更改任何值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.