首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jugglingdb选择id存在于另一个表中的结果

使用jugglingdb选择id存在于另一个表中的结果
EN

Stack Overflow用户
提问于 2013-09-26 03:23:48
回答 1查看 450关注 0票数 0

我正在尝试使用jugglingdb (和mysql适配器)来获取患者列表。我们的模式是这样设置的,即患者必须是用户,但用户不必是患者。这意味着患者有一个userId,而User表保存患者的姓名。

代码语言:javascript
复制
Patient
    id
    userId
User
    id
    givenName
    familyName
    middleInitial

在创建初始页面时,我们只需使用Patient.all获取结果,使用patient.user(...获取用户对象/用户名。这对于少量的记录来说是可以的,但是对于数千条记录来说就不行了。

只有在患者表中引用了用户的id时,我才能获取用户列表?mysql查询示例:

代码语言:javascript
复制
SELECT * FROM User WHERE id IN (SELECT id FROM Patient) AND familyName LIKE '%doe%';

我已经浏览了jugglingdb-mysql adapter一段时间了,还没有找到一个理想的解决方案,除此之外,this question是我到目前为止唯一找到的其他解决方案。

我可以使用的另一个替代/查询是在Patient和User之间创建一个内部连接,然后过滤结果:

代码语言:javascript
复制
SELECT Patient.id
      ,User.familyName
FROM Patient 
    INNER JOIN User ON Patient.userId = User.id 
WHERE User.familyName LIKE '%doe%';

但同样,我也没有找到使用杂耍数据库连接的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2014-08-13 22:04:09

只要关系存在,您就可以始终使用include功能。例如:

代码语言:javascript
复制
Patient.belongsTo(User, { as: 'user', foreignKey: 'userId' });

// Empty callback for async getter.
var c = function () { };

Patient.all({ 
    where: { blah: blash }, 
    include: [ 'user' ] 
}, function (err, patients) {
        var user = patients[0].user(c);
    }
);

您甚至可以将关系包含到关系中。例如:

代码语言:javascript
复制
Role.belongsTo(User, { as: 'role', foreignKey: 'roleId' });

Patient.all({ 
    where: { blah: blash }, 
    include: [ { user: 'role' } ]
}, function (err, patients) {
        var user     = patients[0].user(c);
        var userRole = user.role(c);
    }
);

需要注意的是,有时返回的关系对象(例如“角色”对象)可能是只读的。我没有深入研究这背后的原因,所以我不能给你一个有把握的答案,为什么会发生这种情况,如何发生,或者发生在哪里,但我相信这可能是在JugglingDB内部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19013462

复制
相关文章

相似问题

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