嗨我和之前提出的问题How to access data on a through
table with Bookshelf几乎有同样的问题,但是我没有使用单位(L,Kg,mg,ml等等)连接到RecipeIngredient表。我想拥有的是类似的,但我的单位?像这样:
{
"id": 1,
"name": "Delicious Recipe",
"ingredients": [
{
"id": 1,
"name": "Tasty foodstuff",
"_pivot_id": 1,
"_pivot_recipe_id": 1,
"_pivot_ingredient_id": 1,
"_pivot_amount": 10,
"Unit": "kg"
}]
}
我的多对多表看起来像这样:
CREATE TABLE IF NOT EXISTS `Ingredients_Recipe` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Recipe_id` int(11) NOT NULL,
`Ingredient_id` int(11) NOT NULL,
`amount` int(11) NOT NULL,
`Unit_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `Ingredient_id` (`Ingredient_id`),
KEY `Unit_id` (`Unit_id`),
KEY `Recipe_Ingredients_ibfk_1` (`Recipe_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
我的Unit表看起来像这样:
CREATE TABLE IF NOT EXISTS `Units` (
`id` int(11) NOT NULL,
`unit` varchar(10) NOT NULL,
UNIQUE KEY `unit` (`unit`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我的食谱表如下所示:
CREATE TABLE IF NOT EXISTS `Recipe` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'identifier',
`name` varchar(254) NOT NULL COMMENT 'Name of the recipe',
`description` text NOT NULL COMMENT 'Recipe description',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
和我的成分表看起来像这样:
CREATE TABLE IF NOT EXISTS `Ingredients` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(254) NOT NULL,
PRIMARY KEY (`id`)
)ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 5;
我的食谱模型看起来像这样
module.exports = Bookshelf.Model.extend({
tableName: 'Recipe',
ingredients: function() {
var Ingredient = require("./Ingredient");
return this.belongsToMany(Ingredient);
}
});
我的获取请求如下所示:
Recipe.forge({id: "1"})
.fetch({withRelated: ["ingredients"]})
.then( function (recipe) {
resp.json({error: false, data: recipe.toJSON()});
})
.otherwise(function (err) {
resp.status(500).json({error: true, data: {message: err.message}});
});
如果你运行这个我会得到一个json响应,如下所示: { " id":1, " name":" Delicious Recipe", "成分":[ { " id":1, "名称":"美味食品", " _pivot_id":1, " _pivot_recipe_id":1, " _pivot_ingredient_id":1, }] }
但我想添加
"_pivot_amount": 10,
"Unit": "kg"
在成分对象中。
我该怎么做?
问候
我尝试做的是一本食谱应用程序。我使用node.js作为restAPI服务器,当我发送GET请求时,我想要的是获取配料和配料量以及金额单位的配方。