从交易中获得结果

时间:2015-11-13 01:37:47

标签: javascript node.js bookshelf.js

如何获取用户记录,而不是下面交易的房间记录?

{{1}}

2 个答案:

答案 0 :(得分:1)

在房间完成后添加到链中。

bookshelf.transaction(function (t) {
    return User.forge(data) // here
    .save(null, { transacting: t })
    .then(function (user){
        return Room.forge({ userId: user.id })
        .save(null, { transacting: t })
        .then(function (){
            return user;
        });
    })
})

答案 1 :(得分:1)

使用Promise#tap

bookshelf.transaction(function (t) {
    return User.forge(data)
    .save(null, { transacting: t })
    .tap(function (user){ // change here
        return Room.forge({ userId: user.id })
        .save(null, { transacting: t });
    })
})

请注意,除非您使用关系(在这种情况下可能为UserhasOne),否则它不会附加到hasMany模型:

bookshelf.transaction(function (t) {
    return User.forge(data)
    .save(null, { transacting: t })
    .tap(function (user){
        users.related('rooms').create({}, { transacting: t });
    })
})