Bookshelfjs多个更新数据不返回承诺

时间:2016-05-11 16:22:17

标签: javascript node.js express bluebird bookshelf.js

我想将多行更新到我的数据库。我的问题是承诺不会返回任何东西。它成功保存但不返回任何内容。

我的代码示例:

doUpdate: Promise.method(function (data) {
        var self = this;
        var jsonData = JSON.parse(data);
        return Bookshelf.transaction(function (t) {
            return _.each(jsonData, function (value, key) {
                var queryMatch = {
                    id: value.id,
                    id2: value.id2
                };
                return self.forge(queryMatch)
                    .fetch({transacting: t})
                    .then(function (data) {
                        return data.save({content: value.newValue});
                    })
                    .catch(function(error) {
                        console.log(error)
                    })
            });
        });
    })

我正在使用蓝鸟承诺。

1 个答案:

答案 0 :(得分:0)

我尽量让我的代码尽可能地靠近你的代码。我确实设法按照你的要求做了,所以看一看你能用的东西。

doUpdate: Promise.method(function(data) {

    var Self = this;
    var jsonData = JSON.parse(data);
    return bookshelf.transaction(function(t) {
        return Promise.each(jsonData, function(value, key) {
            var queryMatch = {
                id: value.id,
                id2: value.id2
            };
            return new Self(queryMatch).save({
                content: value.newValue
            }, {
                transacting: t,
                method: 'update'
            });

        });
    });
})

请告诉我这是否适合您。