首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bookshelf.js,在fetchAll()方法之后进行更新

Bookshelf.js,在fetchAll()方法之后进行更新
EN

Stack Overflow用户
提问于 2016-04-30 07:04:25
回答 2查看 1.4K关注 0票数 0

使用bookshelf.js,我尝试获取一组对象,然后将它们全部更新。

代码语言:javascript
复制
function markPostsAsSent(postsIds) {
    return new Promise((resolve, reject) => {
        // Get posts
        Search.Post
        .where({ id: postsIds })
        .fetchAll()
        .then(posts => {
            // For each post, update sent value
            Promise.map(posts.toJSON(), post => post.save({ is_sent: true }))
            .then(() => {
                resolve(true);
            }, err => {
                reject(Dependencies.getException(exceptionName, 500, 'POST_UPDATE_ERROR', new Error(), err));
            });
        }, err => {
            reject(Dependencies.getException(exceptionName, 500, 'POST_FETCH_ERROR', new Error(), err));
        });
    });
}

我试图在Bookshelf.js中实现的就是在SQL中实现这一点:

代码语言:javascript
复制
UPDATE searches_posts
SET is_sent = true
WHERE id IN (1, 2, 3, 4);

(1, 2, 3, 4)显然是来自postsIds参数的值。

SQL看起来比Bookshelf.js方法简单得多。

是否有更好的方法同时更新这些行,而不是在.save()方法上循环?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-07 09:52:10

你的解决方案似乎是可靠的,但当然,还有更好的方法。例如,您可以显式地指定要执行更新(http://bookshelfjs.org/#Model-instance-save),并且可以访问knex查询生成器,并限制要更新的条目(http://knexjs.org/#Builder-whereIn)。

因此,将所有的内容组合在一起,尝试这样的方法(这是我为测试解决方案而执行的演示示例):

代码语言:javascript
复制
new Person().query(function(qb) {
    qb.whereIn('id', [2, 4]);
}).save({
    number_of_children: 5
}, {
    method: 'update'
}).then(function() {
    //Entries with ids 2 and 4 have been updated!
});

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2016-05-08 18:54:09

更新/插入呢?有什么更有说服力的方法来做到这一点呢?

代码语言:javascript
复制
yield Promise.map data, (oneEvent)->
  eventModel = new Event oneEvent

  eventModel.fetch().then (fromDB) ->
    return do eventModel.save if not fromDB?
    fromDB.save oneEvent
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36951885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档