如何使用 thinky 创建新的 n-n 模型并将其 link 添加到现有模型?
How to create a new n-n model using thinky and link it to an existing one?
我刚开始使用 rethinkDB 和 thinky。我想问一下如何创建一个与现有模型有 n-n 关系的模型的新实例。
例如,如果我有一个披萨和浇头的模型。我已经创建了一个 Pizza 实例,如何创建一个 topping 实例并将其 link 添加到已经存在的 pizza 中?
var Pizza = thinky.createModel("Pizza", {
name: type.string(),
size: type.string()
});
var Topping = thinky.createModel("Topping", {
name: type.string(),
});
Pizza.hasAndBelongsToMany(Topping, "toppings", "id", "id");
Topping.hasAndBelongsToMany(Pizza, "pizzas", "id", "id");
var pizza = new Pizza({name:"My pizza", size:"Large"});
var topping = new Topping({name:"Olive"});
如何保存浇头以便它与已经创建的比萨饼相关联?
在 docs 中,对于 1 - n 关系,它们会执行如下操作:
topping.pizzas = pizza
topping.saveAll({pizza: true}).then(...);
在这种情况下,它将不起作用,因为 topping.pizzas 是一个对象数组,而不仅仅是一个对象。
我发现答案很简单:
var pizza = new Pizza({name:"My pizza", size:"Large"});
var topping = new Topping({name:"Olive"});
Topping.filter({name:Olive}).run().then(function (topping) {
if (topping.length > 0){
if (pizza.toppings == undefined){
pizza.toppings = []
}
pizza.toppings.push(topping[0]);
pizza.saveAll().then(...)
}
}
很确定有更好的方法来做到这一点,但这行得通。
我刚开始使用 rethinkDB 和 thinky。我想问一下如何创建一个与现有模型有 n-n 关系的模型的新实例。 例如,如果我有一个披萨和浇头的模型。我已经创建了一个 Pizza 实例,如何创建一个 topping 实例并将其 link 添加到已经存在的 pizza 中?
var Pizza = thinky.createModel("Pizza", {
name: type.string(),
size: type.string()
});
var Topping = thinky.createModel("Topping", {
name: type.string(),
});
Pizza.hasAndBelongsToMany(Topping, "toppings", "id", "id");
Topping.hasAndBelongsToMany(Pizza, "pizzas", "id", "id");
var pizza = new Pizza({name:"My pizza", size:"Large"});
var topping = new Topping({name:"Olive"});
如何保存浇头以便它与已经创建的比萨饼相关联?
在 docs 中,对于 1 - n 关系,它们会执行如下操作:
topping.pizzas = pizza
topping.saveAll({pizza: true}).then(...);
在这种情况下,它将不起作用,因为 topping.pizzas 是一个对象数组,而不仅仅是一个对象。
我发现答案很简单:
var pizza = new Pizza({name:"My pizza", size:"Large"});
var topping = new Topping({name:"Olive"});
Topping.filter({name:Olive}).run().then(function (topping) {
if (topping.length > 0){
if (pizza.toppings == undefined){
pizza.toppings = []
}
pizza.toppings.push(topping[0]);
pizza.saveAll().then(...)
}
}
很确定有更好的方法来做到这一点,但这行得通。