我正在处理三张桌子。
现在我可以获得用户feed
表的activities
和activityTypes
对象(id,来自activitytypes
表的类型),但我还需要获取给定活动的related_user
(users
表)对象,如果列不为空,我将知道related_user的详细信息。
用户
id
email
username
password_hash
activitytypes
id
type
活动
id
user_id (foreign key from users, owner of the activity)
status
activitytype_id (foreign key from activitytypes)
related_user (foreign key from users.
Shows relation with the user_id, if there's any.
if activitytype_id is 2 or 3, this will be shown as "followed, "commented", etc.)
我的模特
var activityType = db.Model.extend({
tableName: 'activitytypes',
hasTimestamps: false
});
var activity = db.Model.extend({
tableName: 'activities',
hasTimestamps: true,
activityTypes: function() {
return this.belongsTo(activityType);
}
});
var user = db.Model.extend({
tableName: 'users',
hasTimestamps: true,
feed: function() {
return this.hasMany(activity);
}
});
这是我现有的查询,如何添加related_user对象呢?
user.where({id : 43}).fetchAll({withRelated : ['feed.activityTypes']}).then(function(data) {
data = data.toJSON();
res.send(data);
});
答案 0 :(得分:1)
我解决了。
我向activity
添加了一种新方法,如下所示。
userRelated : function() {
return this.belongsTo(user,'related_user');
}
这是更新后的查询。我不知道它在优化方面是否正确,但它确实有效。
user.where({
id: 43
}).fetchAll({
withRelated: ['feed.userRelated', 'feed.activityTypes']
}).then(function(data) {
data = data.toJSON();
res.send(data);
});
现在Feed,userRelated和activityTypes会毫无问题地返回,所有内容都以JSON格式显示在data
中。