在bookshelf.js中保存多个记录

时间:2016-03-28 13:16:19

标签: node.js bookshelf.js

如何在bookshelf.js中保存多个记录。

如何在不循环和插入

的情况下保存以下数据
[
  {name: 'Person1'},
  {name: 'Person2'}
]

4 个答案:

答案 0 :(得分:5)

我认为Bookshelf已更新,将'invoke'替换为'invokeThen'。

var Accounts = bookshelf.Collection.extend({
  model: Account
});
    
var accounts = Accounts.forge([
  {name: 'Person1'},
  {name: 'Person2'}
])	

accounts.invokeThen('save').then(function() {
  // ... all models in the collection have been saved
});

答案 1 :(得分:2)

var Promise = require('bluebird');
var Accounts = bookshelf.Collection.extend({
  model: Account
});

var accounts = Accounts.forge([
  {name: 'Person1'},
  {name: 'Person2'}
])

Promise.all(accounts.invoke('save')).then(function() {
  // collection models should now be saved...
});

Plz见注释:Invoke现已被invokeThen

取代
accounts.invokeThen('save').then(function() {
  // ... all models in the collection have been saved
});

答案 2 :(得分:0)

我尝试使用带有invokeThen的伪造跟进,但是在我的情况下失败了。看来我们可以使用模型本身而不必创建单独的集合实例。这里,Employee是一个模型,而不是一个单独的集合对象。

Employee.collection()
  .add(employees)
  .invokeThen('save');

答案 3 :(得分:0)

使用下面提供的invokeThen方法中的第三个参数来执行insert方法。

const payload = [{name: 'Person1'},
      {name: 'Person2'}]

Users.collection(payload).invokeThen("save", null, { method: "insert" }).then(result => {
// further logics
})

我希望这会有所帮助。

谢谢