2016-05-11 2 views
1

Я хочу обновить несколько строк в моей базе данных. Моя проблема заключается в том, что обещание ничего не возвращает. Он успешно сохраняет, но ничего не возвращает.Bookshelfjs несколько данных обновления не возвращают обещание

Вот пример моего кода:

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) 
        }) 
      }); 
     }); 
    }) 

Я использую Bluebird обещание.

ответ

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' 
      }); 

     }); 
    }); 
}) 

Дайте мне знать, если это сработает для вас.

+0

Я заканчиваю использование Promise.map. Возможно, это одно и то же. Я пробовал ваш код, а часть сохранения действительно не работает. Он добавляет строку вместо обновления. Можете ли вы обновить свой ответ? что сохранить код выглядит чистым, чем мой код. Благодаря! –

+0

Я обновил свой код, была небольшая ошибка; Тем не менее, он работал на меня раньше, и он все еще работает ... Надеюсь, теперь это правильно, иначе я боюсь, что могут возникнуть проблемы с версиями knex и bookshelf. – uglycode

+0

Я пробовал ваш последний код. Теперь я получаю эту ошибку. первый аргумент должен быть строкой или буфером –

Смежные вопросы