我正在使用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));
});
});
答案 0 :(得分:2)
您应该更新您的查询,如下所示;
#cg{
background: url("../cg_collage.jpg");
}
如果这不能解决您的问题,您可以尝试更新您的模型,如下所示;
friend.where('user_id', 1)
.fetchAll({
withRelated: [{
'friend_id': function(qb) {
qb.column('id','name')
}}])
.then(function (friends) {
res.send(JSON.stringify(friends));
});