2016-02-10 3 views
0

У меня есть две таблицы, User и Address. Моя таблица User имеет два метода:BookhshelfJS: Присоединение друг к другу

shippingAddress: function() { 
    var Address = require(appRoot + '/config/db').model('Address'); 
    return this.belongsTo(Address, 'shipping_address_id'); 
}, 

billingAddress: function() { 
    var Address = require(appRoot + '/config/db').model('Address'); 
    return this.belongsTo(Address, 'billing_address_id'); 
} 

Как я могу прикрепить Address сказать мой shippingAddress? Я попытался следующие:

new Address(addressQuery) 
    .fetch() 
    .then(function (address) { 
     new User(userQuery) 
      .fetch() 
      .then(function (user) { 
       // Nothing here works 
       // I tried the following: 
       user.shippingAddress().attach(address); // Attach is not defined 
       user.shippingAddress().sync(address); // Nothing happens 
       user.shippingAddress().set(address); // Nothing happens 
       user.save(); 
      }); 
    }); 

Единственное, что я могу сделать, это:

user.attributes.shipping_address_id = address.id; 
user.save(); 

Что не очень элегантное решение. Что я делаю не так?

ответ

0

Во-первых, установить перечень отношений с "withRelated"

new User(userQuery) 
     .fetch({ 
      withRelated:['shippingAddress'] 
     }) 
     .then(function (user) { 

Тогда вы в состоянии сделать:

user.related('shippingAddress').set(...).save(); 

Обязательно shippingAddress() не является 'статической' функции в вашей модели пользователя