【问题标题】:Loopback Remote Method Constantly Adding {id} into the Route环回远程方法不断将 {id} 添加到路由中
【发布时间】:2018-12-18 23:17:59
【问题描述】:

我刚刚开始使用 Loopback。 我已经成功地学习了一门关于 LoopBack 的课程,以及其文档中的许多教程。

现在,当我尝试创建一个真正的远程方法时,我一开始就失败了。

我想创建一个这样的路线:

/workspaces/cards

这应该从我可以传递的一些查询字符串中读取,它会给我一个“瑞士刀”类型的路由,我以后可以在我的前端应用程序中的一些过滤字段中应用它.

我打算使用的方式是这样的:

/workspaces/cards?find=teams
/workspaces/cards?find=projects
/workspaces/cards?find=users
/workspaces/cards?find=countries

第一个问题在使用 CLI 命令创建远程方法后不久出现:lb remote-method。

它确实在我的 workspaces.json 文件中创建了正确的数据,并且我已将样板方法复制粘贴到我的 workspaces.js 文件中。

仅根据复制粘贴提供的内容进行操作,它什么也没做。我的资源管理器中不会出现任何内容。

所以,我对我的 workspace.js 和 workspace.json 文件进行了一些修改,直到我能够使相应的路线出现在资源管理器中。

第一个问题是我只能让欲望路线看起来像这样:

/workspaces/{id}/cards

而且,如上所述,我想要这样:

/workspaces/cards

我已经尝试了很多事情,但到目前为止我还没有能够成功地做到这一点。

第二个问题是它总是需要 ID,我认为它的行为是因为路由,它顽固地出现在 /workspaces/{id}/cards

这是我的 .js 和 .json 文件的样子(对于重要的部分)...

workspace.js

module.exports = function(Workspace) {
    Workspace.cards = function (find, name, callback) {
        var result = {};

        callback(null, result);
    };


    Workspace.remoteMethod(
        'cards',
        {
            http: { "path": "/cards", "verb": "get" },
            accepts: [
                { arg: "find", type: "string", required: false, http: { source: "query" } },
                { arg: "name", type: "string", required: false, http: { source: "query" } }

            ],
            returns: { arg: "result", type: "Object", "root": true }
        }
    );

};

workspace.json

  //...
  "methods": {
    "prototype.cards": {
      "accepts": [
        {
          "arg": "find",
          "type": "string",
          "required": false,
          "description": "To match a search for an specific workspace|project|team|user|county",
          "http": {
            "source": "query"
          }
        },
        {
          "arg": "name",
          "type": "string",
          "required": false,
          "description": "To match a search fro an specific name of workspace|project|team|user|country",
          "http": {
            "source": "query"
          }
        }
      ],
      "returns": [
        {
          "arg": "result",
          "type": "object",
          "root": true,
          "description": ""
        }
      ],
      "description": "General Filtering for Everyting",
      "http": [
        {
          "path": "/cards",
          "verb": "get"
        }
      ]
    }
  }

我错过了什么?

这是我当前的环回版本:

4.2.0 (generator-loopback@5.8.2 loopback-workspace@4.3.0)

【问题讨论】:

    标签: loopbackjs loopback


    【解决方案1】:

    找到了!

    刚刚从 json 文件中删除了数据,一切都开始工作了。

    【讨论】:

    • 此设置中的错误在于您定义了两次远程方法:在 js 代码中和在 json 中。你需要做一个或另一个。如果您添加prototype 关键字,则意味着您将通过具有特定ID 的模型引用端点,因此您的路由看起来像:workspace/{id}/cards。如果您删除 prototype 会很好,但正如我所写 - 您需要定义一次远程方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多