繁体   English   中英

sequelize.js深度保存模型实例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM