Sequelize update with association

后端 未结 3 1880
有刺的猬
有刺的猬 2020-12-15 15:58

In sequelize it\'s possible to create a row and all it\'s association in one go like this:

return Product.create({
  title: \'Chair\',
  User: {
    first_na         


        
相关标签:
3条回答
  • 2020-12-15 16:53

    First you have to find model including sub model which you want to update. then you can get reference of sub model to update easily. i am posting an example for your reference. hope it will help.

    var updateProfile = { name: "name here" };
    var filter = {
      where: {
        id: parseInt(req.body.id)
      },
      include: [
        { model: Profile }
      ]
    };
    
    Product.findOne(filter).then(function (product) {
      if (product) {
        return product.Profile.updateAttributes(updateProfile).then(function (result) {
          return result;
        });
      } else {
        throw new Error("no such product type id exist to update");
      }
    });
    
    0 讨论(0)
  • 2020-12-15 16:53

    If you want to update both models(Product & Profile) at once. One of the approaches can be:

    // this is an example of object that can be used for update
    let productToUpdate = {
        amount: 'new product amount'
        Profile: {
            name: 'new profile name'
        }
    };
    Product
        .findById(productId)
        .then((product) => {
            if(!product) {
                throw new Error(`Product with id ${productId} not found`);
            }
    
            product.Profile.set(productToUpdate.Profile, null);
            delete productToUpdate.Profile; // We have to delete this object to not reassign values
            product.set(productToUpdate);
    
            return sequelize
                .transaction((t) => {
                    return product
                        .save({transaction: t})
                        .then((updatedProduct) => updatedProduct.Profile.save());
                })
        })
        .then(() => console.log(`Product & Profile updated!`))
    
    0 讨论(0)
  • 2020-12-15 16:54
    await Job.update(req.body, {
            where: {
              id: jobid
            }
          }).then(async function () {
            await Job.findByPk(jobid).then(async function (job) {
              await Position.findOrCreate({ where: { jobinput: req.body.jobinput } }).then(position => {
                job.setPositions(position.id)
              })
    })
    

    Here positon belongsToMany job

    0 讨论(0)
提交回复
热议问题