【问题标题】:Make a join query in loopback.io在 loopback.io 中进行连接查询
【发布时间】:2015-08-26 16:20:06
【问题描述】:

我正在尝试使用 loopback.io 作为我的学习过程来构建一个简单的应用程序。我已经建立了项目,创建的模型和 api 工作正常。

现在我正在尝试创建一个自定义 api,它可以通过连接查询从两个不同的模型中获取数据。所以我有两个模型

故事:id, title, noteId

备注:id , desc

我有 stories.js 文件

module.exports = function(Stories) {

    Stories.list = function(cb) {
        // make a join query
    };
    
    Stories.remoteMethod(
        'list', {
            http: {
                path: '/list',
                verb: 'get'
            },
            returns: {
                arg: 'list',
                type: 'array'
            }
        }
    );
};

一般来说,我会在 php api 中加入,但在这里我有点困惑。我可以在这里将原始查询传递给数据库,还是环回有一些不同的方法来实现这一点。任何帮助将不胜感激。

【问题讨论】:

  • 您是要在 Loopback 中加入两个模型还是对其运行原始 SQL?
  • 我只希望结果中的每条记录都包含故事中的所有列和笔记中的所有列。要么加入模型,要么运行一切正常的原始 sql 查询..

标签: mysql loopbackjs


【解决方案1】:

你不需要传递 sql 查询。您可以使用query data 使用PersistedModel 查找方法,使用include filter 查找方法

要使用包含过滤器,您必须 create model relation.

例如:

注意关系:

"relations": {
  "stories": {
    "type": "hasMany",
    "model": "Story",
    "foreignKey": "noteId"
  }
},

查询:

Note.find({include: ['stories']}, function(err, data) { ... });

【讨论】:

  • 嗨,A.Z,我已经这样做了。我有故事 => "relations": { "notes": { "type": "hasMany", "model": "notes", "foreignKey": "id" } },并且在 notes => "relations" 中: { "stories": { "type": "belongsTo", "model": "Stories", "foreignKey": "noteId" } },没有帮助
  • 您没有正确设置您的关系。将相同的外键放在 hasMany 和 belongsTo 关系中。 Story hasMany notes 使用storyId 外键,Note belongsTo Story 使用storyId。这会将storyId字段添加到将用于“包含”过滤器的注释表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2022-01-14
  • 2018-06-17
  • 2016-08-14
  • 2021-09-26
相关资源
最近更新 更多