2016-07-19 5 views
0

Я пытался искать, но никакого намека не на полку эквивалентный запрос к этому одинBookshelf запрос обновить таблицу

update <Table Name> set <Column> x = y where z = a; 

Спасибо.

+0

вниз голосов приветствуются, если с комментариями для улучшения. Обучение всегда важно, чем репутация стоп. – Hitsa00

+0

Я думаю, что кто-то, кто проголосовал, не понравился вашему исследованию. Вы действительно прошли через Книжную Книгу? Вопрос будет более полезен, если вы добавите образец кода, демонстрирующий вашу попытку. – flaviodesousa

+1

Спасибо @flaviodesousa. это то, что мне нужно. Я не добавлял детали, так как хочу, чтобы он был общим. ваш ответ также очень общий и может помочь другим новичкам, как я. ЕЩЕ РАЗ СПАСИБО!!!. :) – Hitsa00

ответ

2

Книжная полка save() documentation имеет пример именно для этого.

Просто используйте where() на модели, чтобы указать, какие строки и save() со списком атрибутов вместе с опцией { patch: true }.

Если у нас есть таблица пользователей (номер, имя, адрес электронной почты) это будет что-то вроде:

var knex = require('knex')({ 
    client: 'sqlite3', 
    connection: {filename: 'data.sqlite3'}, 
    debug: true}); // <- so you can see the generated query 
var bookshelf = require('bookshelf')(knex); 

var User = bookshelf.Model.extend({ 
    tableName: 'users', 
}); 

(function() { 
    User 
    .where({name:'amy'}) 
    .save({email: '[email protected]'},{patch:true}) 
    .then(function(x) { 
     console.log(x.toJSON()); 
    }); 
})(); 

Код выше производит в качестве выходного сигнала:

{ method: 'update', 
    options: {}, 
    bindings: [ '[email protected]', 'amy' ], 
    sql: 'update "users" set "email" = ? where "name" = ?' } 
{ email: '[email protected]' } 
Смежные вопросы