Bookshelf 컬렉션의 모든 모델을 반복하고 정보를 계산 한 다음 해당 정보를 각 모델에 저장해야합니다. 오류를 롤백하려면 단일 트랜잭션에서이 작업을 수행하는 것이 중요합니다.Bookshelf를 사용하여 단일 트랜잭션으로 컬렉션의 모든 모델을 처리하고 업데이트하는 방법?
나는이 작업을 수행하기 위해 실제로 생각할 수있는 유일한 방법은 Promise.map
(Bluebird)이지만 책꽂이 모음은 전달할 수 없습니다.
Bookshelf.transaction(function (t) {
return Thing.fetchAll({transacting:t}).then(function (things) {
return Promise.map(things, function (thing) {
return thing.save({
value: computeSomeValueSync(thing)
}, {
transacting: t
});
});
});
}).tap(function() {
console.log("update complete");
});
things
때문에이 Promise.map
로 전달 될 수 없으며, 책장 API에서 아무것도 할 수없는 것 : 예를 들어,이 작동하지 않습니다 (Thing
는 모델이다 Promise
는 블루 버드 약속입니다) 컬렉션에서 모델 배열을 얻을 수 있습니다. ...
어떻게하면됩니까?