Удаленный метод не отображается в loopback API Explorer - PullRequest
0 голосов
/ 08 января 2019

У меня есть модель сопоставления ролей, которая сопоставляет userId с roleId, мне нужен удаленный метод в модели сопоставления ролей, чтобы получить ID сопоставления ролей для данного userId.

это код для удаленного метода

'use strict';

module.exports = function(Rolemapping) {
   Rolemapping.getRolesByUser = async function (id, cb) {
    const roleMappings = await Rolemapping.find({ where: { principalId: id 
 } })
    cb(null, roleMappings);
  };
  Rolemapping.remoteMethod("getRolesByUser", {
    http: {
      path: "/getRolesByUser",
      verb: "get"
    },
    accepts: [
      { arg: "userId", type: "string", http: { source: "query" } }
    ],
    returns: {
      arg: "result",
      type: "string"
    },
    description: "Cvs "
  });
 };

это файл ролевого отображения json:

{
  "name": "roleMapping",
  "base": "RoleMapping",
  "idInjection": true,
  "options": {
  "validateUpsert": true
},
   "properties": {},
   "validations": [],
   "relations": {
   "role": {
   "type": "belongsTo",
   "model": "role",
   "foreignKey": "roleId"
 }
 },
   "acls": [],
   "methods": {}
 }

указанный выше удаленный метод не отображается в проводнике API loopback.

1 Ответ

0 голосов
/ 08 января 2019

RoleMapping - это встроенная модель, ее файл role-mapping.js скрыт в node_modules/loopback, я его протестировал и не похоже, что он загрузит файл js для себя из common/models.

Похоже, загрузочный скрипт - ваш единственный выбор. Это тот же код, но ваша функция получает объект сервера.

server/boot/get-roles-by-user.js

module.exports = function(server) {
  const Rolemapping = server.models.RoleMapping;
  Rolemapping.getRolesByUser = async function (id) {
    return JSON.stringify(await Rolemapping.find({ where: { principalId: id
      } }))
  };
  Rolemapping.remoteMethod("getRolesByUser", {
    http: {
      path: "/getRolesByUser",
      verb: "get"
    },
    accepts: [
      { arg: "userId", type: "string", http: { source: "query" } }
    ],
    returns: {
      arg: "result",
      type: "string"
    },
    description: "Cvs "
  });
}

Я также удалил параметр cb из вашего удаленного метода, потому что методы, которые возвращают Promise, не нуждаются в нем, просто возвращают значение, как и для любой другой функции

...