我使用的是ExpressJS和MySQL。
我正在尝试获取一个用户的朋友列表,但是在这里我无法获取friend_id的信息。如何将其包含到我的查询中?它似乎遵循自己的约定,所以没有在查询中包含friend_id。
下面是我现在得到的信息:
[
{"id":1,"user_id":1,"friend_id":2,"friends":
{"id":1,"email":"user1@gmail.com","username":"user1"}},
{"id":2,"user_id":1,"friend_id":3,"friends":
{"id":1,"email":"user1@gmail.com","username":"user1"}}
]我应该能够看到friend_id =2和friend_id =3的值(id、电子邮件、用户名等)
朋友表
id
user_id (foreign key from users table)
friend_id (foreign key from users table)用户表
id
name
email模型
var friend = db.Model.extend({
tableName: 'friends',
friends: function () {
return this.belongsTo(user);
}
});
var user = db.Model.extend({
tableName: 'users'
});查询
var friend = require('../models').friend;
var user = require('../models').user;
router.get('/relative', function (req, res) {
friend.where('user_id', 1).fetchAll({withRelated: ['friends']}).then(function (friends) {
res.send(JSON.stringify(friends));
});
});发布于 2015-10-26 19:08:00
你应该像下面这样更新你的查询;
friend.where('user_id', 1)
.fetchAll({
withRelated: [{
'friend_id': function(qb) {
qb.column('id','name')
}}])
.then(function (friends) {
res.send(JSON.stringify(friends));
});如果这不能解决你的问题,你可以尝试更新你的模型,如下所示;
var friend = db.Model.extend({
tableName: 'friends',
friends: function () {
return this.belongsTo(user, 'friend_id');
}
});https://stackoverflow.com/questions/33343368
复制相似问题