Bookshelf.js accessing multiple tables that are related -


i'm dealing 3 tables.

right can feed of user (activities table) , activitytypes object (id,type activitytypes table), need related_user (users table) object of given activity, i'll know details of related_user if column isn't empty.

users

id email username password_hash 

activitytypes

id type 

activities

id user_id (foreign key users, owner of activity) status activitytype_id (foreign key activitytypes) related_user (foreign key users.  shows relation user_id, if there's any.  if activitytype_id 2 or 3, shown "followed, "commented", etc.) 

my models

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

this existing query, how can add related_user object it?

user.where({id : 43}).fetchall({withrelated : ['feed.activitytypes']}).then(function(data) {     data = data.tojson();     res.send(data);   }); 

i solved it.

i added new method activity, below.

userrelated : function() {     return this.belongsto(user,'related_user');   } 

and here's updated query. don't know whether it's right way or not in terms of optimization, works.

user.where({     id: 43   }).fetchall({     withrelated: ['feed.userrelated', 'feed.activitytypes']   }).then(function(data) {     data = data.tojson();     res.send(data);   }); 

right feed, userrelated , activitytypes return without problem, in data in json format.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -