Bookshelf.js,在fetchAll()方法之后更新
Bookshelf.js, update after fetchAll() method
使用bookforf.js,我试图获得一组对象,然后将它们全部更新。
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:中的功能相当
UPDATE searches_posts
SET is_sent = true
WHERE id IN (1, 2, 3, 4);
CCD_ 1显然是来自CCD_ 2参数的值。
SQL似乎比Bookshelf.js方法简单得多。
有没有更好的方法可以同时更新这些行,而不是在.save()方法上循环?
您的解决方案看起来很可靠,但当然还有更好的方法。例如,您可以明确指定要执行更新(http://bookshelfjs.org/#Model-实例保存),然后可以使用knex查询生成器并限制要更新的条目(http://knexjs.org/#Builder-其中In)。
所以,把所有的东西放在一起,试试这样的东西(这是我为了测试解决方案而执行的一些演示示例):
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!
});
希望这能有所帮助!
更新/插入怎么样?有什么更雄辩的方法可以做到这一点?
yield Promise.map data, (oneEvent)->
eventModel = new Event oneEvent
eventModel.fetch().then (fromDB) ->
return do eventModel.save if not fromDB?
fromDB.save oneEvent
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有一种方法可以在所有嵌套循环之后放置一个标签,以便在一步中将它们全部打断
- Bookshelf.js,在fetchAll()方法之后更新
- 在客户端 Javascript 方法之后运行服务器方法
- 在主干视图中的每个方法之后是否需要“返回此内容”
- 组件之后子元素中的某个方法DidMount in parrent 元素
- 如何在POST方法之后使用javascript更改HTML内容
- 在完成另外两个方法之后调用一个方法
- oncomplete 方法并不总是在操作 JSF 之后执行
- 任何匹配模式的方法,要么在某个字符之前,要么在某个字符之后
- 如何在 setInterval() 方法之后设置“stop”
- JQuery 插件可以在 JQuery 方法链上调用,还是需要在选择器之后直接调用
- 使用日期时间选择器 UI 选择在日期时间之后使用什么方法触发事件
- 在字符串原型方法之后,after_Last,之前和before_Last之后实现(在javascript中)的更好方法
- 在Meteor方法中承诺之后插入集合
- AngularJS有没有一种方法可以在boostrap之后动态注册指令
- 在javascript中,在函数名被指向其他地方之后,是否有任何方法可以访问该未命名的函数
- 在PreSaveAction方法之后执行的ECMAScript回调方法
- 如何在POST方法之后将更改应用于web
- ExpressJS为什么我的GET方法是在DELETE方法之后调用的