2016-10-08 9 views
0

Я только начал использовать rethinkDB и думаю. Я хотел спросить, как я собираюсь создать новый экземпляр модели, которая имеет отношения n-n с уже существующей моделью. Например, если у меня есть модель для Pizzas и Toppings. Я уже создал экземпляр Pizza, как мне создать экземпляр с вершиной и связать его с уже существующей пиццей?Как создать новую модель n-n с использованием мышления и привязать ее к существующему?

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 - п отношений они делают что-то вроде:

topping.pizzas = pizza 
topping.saveAll({pizza: true}).then(...); 

В этом случае он не будет работать, потому что topping.pizzas массив объектов, а не только один объект.

ответ

0

Ответ довольно прост я узнал:

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(...) 
    } 
} 

Довольно уверен, что есть лучшие способы сделать это, но это работает.