使用Bookshelf.js执行更新后获取数据

时间:2017-01-30 19:42:20

标签: javascript node.js postgresql bookshelf.js

我使用save()方法(Bookshelf.js)来更新PostgreSQL中的数据。我想在更新后如何获取完整的模型(所有列)?在我看来,save()方法仅返回id和更新列。我可能做错了所以任何指导都将不胜感激。感谢。

3 个答案:

答案 0 :(得分:1)

在Sequelizejs中,我们使用这种方法只是在操作成功时调用你的函数中的任何模型。名字你可以试试这里

new Author({id: 1, first_name: 'User'})
  .save({bio: 'Short user bio'}, {patch: true})
  .then(function(model) {
    //two approach 
//try this but not sure work in Bookshelf or not
    return model.fetchAll();
//or u can try 
           new Article().fetchAll()
            .then(function(articles) {
                 res.send(articles.toJSON());
            }).catch(function(error) {
          res.send('An error occured');
    });

      });

答案 1 :(得分:0)

.save()书架方法返回attributes字段中的更新对象。

new User().save({ firstname: 'Foo', lastname: 'Bar' })
.then(data => {
  console.log(data.attributes);

  // You can also do this to remove Bookshelf Model methods
  data = data.toJSON();
  console.log(data);
});

答案 2 :(得分:0)

如果我正确的话。您想获取刚刚更新的行的所有列。然后,您可以执行以下操作:

User.where({ name: name }).fetch().asCallback(function(err, existingEntry){
  if(existingEntry){
      existingEntry.save({ 
          address: address,
      }).asCallback(function(err, updatedColumns){
          console.log(existingEntry); // Here you will get all the columns of the updated row
          console.log(updatedColumns); // Here you can get the columns that you have just updated
      })
  }
})

如果是我所说的情况,对我有用,对所有人都有用。此代码的另一件事是针对0.8.2版的书架。不要误会