首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Book搁置: belongsTo()关系

Book搁置: belongsTo()关系
EN

Stack Overflow用户
提问于 2015-10-26 18:24:11
回答 1查看 909关注 0票数 0

我使用的是ExpressJS和MySQL。

我正在尝试获取一个用户的朋友列表,但是在这里我无法获取friend_id的信息。如何将其包含到我的查询中?它似乎遵循自己的约定,所以没有在查询中包含friend_id。

下面是我现在得到的信息:

代码语言:javascript
复制
[
    {"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、电子邮件、用户名等)

朋友表

代码语言:javascript
复制
id
user_id (foreign key from users table)
friend_id (foreign key from users table)

用户表

代码语言:javascript
复制
id
name
email

模型

代码语言:javascript
复制
var friend = db.Model.extend({
    tableName: 'friends',
    friends: function () {
        return this.belongsTo(user);
    }
});

var user = db.Model.extend({
    tableName: 'users'
});

查询

代码语言:javascript
复制
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));
    });
});
EN

回答 1

Stack Overflow用户

发布于 2015-10-26 19:08:00

你应该像下面这样更新你的查询;

代码语言:javascript
复制
       friend.where('user_id', 1)
       .fetchAll({ 
          withRelated: [{
             'friend_id': function(qb) {
                qb.column('id','name')
           }}])
       .then(function (friends) {
            res.send(JSON.stringify(friends));
        });

如果这不能解决你的问题,你可以尝试更新你的模型,如下所示;

代码语言:javascript
复制
var friend = db.Model.extend({
    tableName: 'friends',
    friends: function () {
        return this.belongsTo(user, 'friend_id');
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33343368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档