BookhshelfJS:附加一对一关系
BookhshelfJS: Attaching One-to-One relationship
我有两个 table,User
和 Address
。我的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' 函数
我有两个 table,User
和 Address
。我的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' 函数