Node.js 如何在Sequelize Postgres中更新数组

Node.js 如何在Sequelize Postgres中更新数组,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我在Sequelize中有一个Postgres db的用户模型: 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

我在Sequelize中有一个Postgres db的用户模型:

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) {

   }
 }
  });
我试图通过向数组中添加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);
        });

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

我以前遇到过这个问题,并在他们的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))
})

肯定感觉有更好的方法,但这就是我找到方法的原因。

对于下一位访客,我可能已经找到了更好的方法来解决这个问题:

User.update(
 {library: Sequelize.fn('array_append', Sequelize.col('library'), req.body._isbn)},
 {where: {fb_id: req.user.fb_id}}
);

张贴代码很好,但请尝试添加一些文字来描述您所做的工作。