BookhshelfJS:附加一对一关系

BookhshelfJS: Attaching One-to-One relationship

我有两个 table,UserAddress。我的tableUser有两个方法:

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();

这不是一个非常优雅的解决方案。我做错了什么?

首先,设置关系列表"withRelated"

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

那么你可以这样做:

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

确保 shippingAddress() 不是您的用户模型中的 'static' 函数