Wednesday, 9 January 2019

How to update hasMany associations when updating model?

Is there a way to update an object (organization) and it’s associations (tasg) in a single call? In my case I have Orgs -> tags. One org can have many tags.

I can’t figure out how to update the tags as well as the organization in one simple call

function updateOrganization(db, stats) {
  return function (req, res) {
    let myOrg

    db.organization.findOne({
      where: {
        id: req.params.id
      },
      include: ['tags']
    })
      .then(org => {
        myOrg = org
        let promises = []

        if (req.body.tags) {
          req.body.tags.forEach(tag => {
            promises.push(org.createTag({ name: tag }))
          })
        }

        return Promise.all(promises)
      })
      .then(tags => {
        console.log('tags = ', tags)

        return myOrg.setTags(tags) <-- DOES NOT SEEM TO BE WORKING
      })
     .then(updatedOrg => {
       console.log('updatedOrg.get() = ', updatedOrg.get()) <-- DOES NOT CONTAIN NEW TAGS
       console.log('myOrg final = ', myOrg.get()) <-- DOES NOT CONTAIN NEW TAGS
       return res.status(HttpStatus.OK).send(myOrg)
      })
      .catch(err => {
        req.log.error(err)
        return handleErr(res, HttpStatus.INTERNAL_SERVER_ERROR, err.message)
      })
  }
}



from How to update hasMany associations when updating model?

No comments:

Post a Comment