bookshelf.js - bookshelf.js 中的 Knex.js 方法

标签 bookshelf.js knex.js

如何插入a increment method就像下面代码中的 bookshelf.knex('articles').increment('fetchCount', 1) :

router.get('/:id', (req, res) => {
   Article.query({
      where: {id: req.params.id}
   }).fetch().then(article => {
      res.json(article)
   })
})

我有一个名为“articles”的表,我想在发送 json 响应之前增加 fetchCount 列中的值。

当我使用 bookshelf.knex 时,bookshelf 应该是我的模型,如 Article?

最佳答案

书架方式是这样的:

router.get('/:id', (req, res) => {
   Bookshelf.transaction(trx => {
      return Article
      .query({
         where: {id: req.params.id}
      })
      .fetch({transacting: trx})
      .then(article => {
         // handle article == null here
         return article
         .save(
            {fetchCount: 1 + article.get('fetchCount')},
            {patch: true, transacting: trx})
      })
   })
   .then(article => {
      res.json(article)
   })
})

要点是在获取和更新时都进行事务,因此确保值在更新之前被锁定并保持一致。

关于bookshelf.js - bookshelf.js 中的 Knex.js 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39443497/

相关文章:

bookshelf.js - 使用 UpdatePivot 附加 "Not Null"列

javascript - 为什么 req.body 在 Express 中未定义?

javascript - 通过 knex 插入 faker 数据

mysql - bookshelfJs 中未定义的绑定(bind)错误限制返回的列

node.js - 是否可以在 Bookshelf.js 中指定用于数据关系的字段

node.js - 使用 Bookshelf.js 在数据透视模型上设置时间戳

javascript - 如何使用 knex 查询对

node.js - 限制 Bookshelf 模型上的 Knex 查询仅返回 n 条记录

node.js - 书架关系检测是否已获取

mysql - 如何在 bookshelf.js 中同时插入父表和子表