我有一个名为Category的模型和另一个名为Product的模型。 这两个模型之间存在关系:
// Category Model
var Category = bookshelf.Model.extend({
tableName : 'categories',
hasTimestamps : true,
products : function () {
return this.hasMany(Product, 'category_id');
}
});
// Product model
var Product = bookshelf.Model.extend({
tableName : 'products',
hasTimestamps : true,
category : function() {
return this.belongsTo(Category, 'category_id');
}
});
我尝试在通过交易给出documentation的示例后插入一个类别和3个产品。插入工作正常,但我无法返回所有插入的数据,包括产品(该类别可以,但我对新产品没有任何帮助)。
这是我的完整代码:
bookshelf.transaction(function(t){
var products = req.body.products;
var tableProd = [];
//if (!req.params.idCategory || req.params.idCategory ==0) {
return Category.forge({
name : req.body.name,
code : req.body.code,
tax_percentage : req.body.tax_percentage,
description : req.body.description
})
.save(null, {transacting : t})
.tap(function (category) {
for (var i=0; i < products.length; i++){
tableProd.push({
barcode : products[i].barcode,
cip : products[i].cip,
category_id : category.id,
quantity : products[i].quantity,
retail_price : products[i].retail_price,
description : products[i].description,
name : products[i].name,
DCI_name : products[i].DCI_name,
kind : products[i].kind,
comment : products[i].comment,
status : products[i].status,
critical_threshold : products[i].critical_threshold,
max_threshold : products[i].max_threshold,
date_end : products[i].date_end
});
}
return Promise.map(tableProd, function (info) {
Product.forge(info).save(null, {transacting : t})
})
});
})
.then(function (category) {
var result = category.related('products').pluck('category_id');
console.log('Category' + JSON.stringify(category.toJSON()) + ' resultat: ' + JSON.stringify(result));
res.json({error : false, data : {category : category.toJSON()}})
})
.catch(function (err) {
console.log('Error msg : ' + err.message);
})
这句话有什么问题:
category.related('products').pluck('category_id')
如何插入所有数据:包括3种产品的类别?
感谢您的帮助
答案 0 :(得分:0)
这对我有用;
var ADDRESS = bookshelf.Model.extend({
tableName: 'ADDRESSES'});
var ADDRESSES = bookshelf.Collection.extend({
model: ADDRESS});
var addressArray = new Array();
for(var i=0; i<datas.length; i++) {
addressArray.push({
field1: datas[i].field1,
...
});
}
var addressCollection = ADDRESSES.forge(addressArray);
addressCollection.invokeThen('save').then(function(addressResults) {
console.log(addressResults);
});
您可以遍历addressResults并提取插入的ID。玩得开心:)