如何在 Sequelize Postgres 中更新数组

Rob*_*ang 6 postgresql node.js sequelize.js

我在 Sequelize 中有一个 Postgres 数据库的用户模型:

var User = sequelize.define('User', {
fb_id: DataTypes.STRING,
access_token: DataTypes.TEXT,
first_name: DataTypes.STRING,
last_name: DataTypes.STRING,
email: DataTypes.TEXT,
profilePictureURL: DataTypes.TEXT,
library: DataTypes.ARRAY(DataTypes.STRING)
}, {
underscored: true,
classMethods: {
  associate: function(models) {

   }
 }
  });
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过将 ISBN 添加到数组来更新图书馆字段。这是我的 POST 请求的代码:

req.user.library.push(req.body._isbn); // adding the posted ISBN to the user object in my express-session

User.findOrCreate({where: {fb_id: req.user.fb_id}, 
        defaults: {
            access_token :      req.user.access_token,                 
            first_name :        req.user.first_name,
            last_name :         req.user.last_name,
            email :             req.user.email, 
            profilePictureURL : req.user.profilePictureURL,
            library: req.user.library // new library object
        }})
        .spread(function (updatedUser, created){
            res.status(200).json(updatedUser);
        }).error(function(err){
            res.status(500).json(err);
        });
Run Code Online (Sandbox Code Playgroud)

没有错误,但是检查updatedUser对象后库字段没有更新。如何正确更新 Sequelize 中的数组字段?

Edw*_*ith 3

我之前遇到过这个问题,并在他们的 Github 问题中找到了答案。我完成它的方式是

User.find({
  where: {
    fb_id: req.user.fb_id
  }
})
.then((user) => {
  user.library.push(req.body._isbn)
  user.update({
    library: user.library
  },{
    where: {
      fb_id: req.user.fb_id
    }
  })
  .then(user => res.json(user))
})
Run Code Online (Sandbox Code Playgroud)

确实感觉有更好的方法,但这样我就找到了方法。