Return 新插入的模型和关系
Return model and relations newly inserted
我有一个名为 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 个产品。插入工作正常,但我无法 return 插入所有数据,包括产品(对于类别没问题,但我对新产品一无所获)。
这是我的完整代码:
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 个产品的类别?
感谢您的帮助
这对我有用;
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。玩得开心:)
我有一个名为 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 个产品。插入工作正常,但我无法 return 插入所有数据,包括产品(对于类别没问题,但我对新产品一无所获)。
这是我的完整代码:
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 个产品的类别?
感谢您的帮助
这对我有用;
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。玩得开心:)