Я получаю сообщение об ошибке:
Unhandled error in GET /message-templates?filter[include]=groups: 500 TypeError: include.filter is not a function
at Object.includeRelatedModels (/.../node_modules/@loopback/repository/src/relations/relation.helpers.ts:84:37)
at MessageRepository.includeRelatedModels (/.../node_modules/@loopback/repository/src/repositories/legacy-juggler-bridge.ts:524:12)
РЕДАКТИРОВАТЬ: это проблема версии? https://github.com/strongloop/loopback-next/issues/1352, кажется, недавний поток.
У меня есть определенный класс Loopback, который использовал lb4 relation
без проблем. Проверка идентификатора работает, и все выглядит нормально, за исключением случаев, когда я пытаюсь включить данные в запрос REST.
В основном: http://localhost:3001/message-templates?filter[include]=groups
.
http://localhost:3001/message-templates
работает просто отлично. Как мне разрешить доступ к реляционным данным?
В основном, если у меня есть модель, возвращаемая с сервера, которая представлена объектом JSON и имеет свойство: groupId: 3
, я хочу свойство вместо этого значение будет group: {...groupData}
. В документации просто говорится, как создать связь между моделями. Но, похоже, ничего не получится получить доступ к реляционным свойствам.
{
"name": "",
"version": "1.0.0",
"description": "",
"keywords": [
"loopback-application",
"loopback"
],
"main": "index.js",
"engines": {
"node": ">=8.9"
},
"scripts": {
"build": "lb-tsc",
"build:watch": "lb-tsc --watch",
"clean": "lb-clean dist *.tsbuildinfo",
"lint": "npm run prettier:check && npm run eslint",
"lint:fix": "npm run eslint:fix && npm run prettier:fix",
"prettier:cli": "lb-prettier \"**/*.ts\" \"**/*.js\"",
"prettier:check": "npm run prettier:cli -- -l",
"prettier:fix": "npm run prettier:cli -- --write",
"eslint": "lb-eslint --report-unused-disable-directives .",
"eslint:fix": "npm run eslint -- --fix",
"pretest": "npm run clean && npm run build",
"test": "NODE_ENV=testing lb-mocha --allow-console-logs \"dist/tests\"",
"test-single": "NODE_ENV=testing lb-mocha --allow-console-logs $1",
"posttest": "npm run lint",
"test:dev": "lb-mocha --allow-console-logs dist/tests/**/*.js && npm run posttest",
"migrate": "node ./dist/migrate",
"prestart": "npm run build",
"start:watch": "tsc-watch --target es2017 --outDir ./dist --onSuccess \"node .\"",
"start": "node -r source-map-support/register .",
"prepublishOnly": "npm run test",
"start-prod": "pm2-runtime start ecosystem.config.js --env production",
"stop-prod": "pm2-runtime stop ecosystem.config.js --env production"
},
"repository": {
"type": "git"
},
"author": "",
"license": "",
"files": [
"README.md",
"index.js",
"index.d.ts",
"dist",
"src",
"!*/tests"
],
"dependencies": {
"@loopback/authentication": "^2.1.11",
"@loopback/authentication-passport": "^0.1.0",
"@loopback/boot": "^1.5.3",
"@loopback/build": "^2.1.0",
"@loopback/cli": "^1.21.4",
"@loopback/context": "^1.21.4",
"@loopback/core": "^1.9.3",
"@loopback/openapi-v3": "^1.9.4",
"@loopback/repository": "^1.12.0",
"@loopback/rest": "^1.17.0",
"@loopback/rest-explorer": "^1.3.4",
"@loopback/service-proxy": "^1.3.3",
"aws-sdk": "^2.531.0",
"bcryptjs": "^2.4.3",
"cryptr": "^4.0.2",
"firebase-admin": "^8.6.0",
"google-libphonenumber": "^3.2.6",
"isemail": "^3.2.0",
"jsonwebtoken": "^8.5.1",
"lodash": "^4.17.15",
"loopback-connector-mysql": "^5.4.2",
"mkdirp": "^0.5.1",
"moment": "^2.24.0",
"moment-timezone": "^0.5.27",
"multer": "^1.4.2",
"node-cron": "^2.0.3",
"passport": "^0.4.0",
"passport-jwt": "^4.0.0",
"pm2": "^4.1.2",
"twilio": "^3.35.1",
"uuid": "^3.3.3",
"winston": "^3.2.1",
"winston-papertrail": "^1.0.5"
},
"devDependencies": {
"@loopback/eslint-config": "^4.0.1",
"@loopback/testlab": "^1.7.4",
"@types/aws-sdk": "^2.7.0",
"@types/bcryptjs": "^2.4.2",
"@types/cryptr": "^4.0.0",
"@types/google-libphonenumber": "^7.4.17",
"@types/lodash": "^4.14.138",
"@types/mkdirp": "^0.5.2",
"@types/moment": "^2.13.0",
"@types/moment-timezone": "^0.5.12",
"@types/multer": "^1.3.9",
"@types/node": "^10.14.15",
"@types/node-cron": "^2.0.2",
"@types/passport": "^1.0.1",
"@types/passport-jwt": "^3.0.1",
"@types/twilio": "0.0.10",
"@types/uuid": "^3.4.5",
"@typescript-eslint/eslint-plugin": "^2.0.0",
"@typescript-eslint/parser": "^2.0.0",
"eslint": "^6.2.0",
"eslint-config-prettier": "^6.1.0",
"eslint-plugin-eslint-plugin": "^2.1.0",
"eslint-plugin-mocha": "^6.0.0",
"nodemon": "^2.0.2",
"source-map-support": "^0.5.13",
"typescript": "~3.5.3"
}
}
host@host:~/dir$ lb4 --version
@loopback/cli version: 1.21.4
@loopback/* dependencies:
- @loopback/authentication: ^2.1.11
- @loopback/boot: ^1.5.3
- @loopback/build: ^2.0.8
- @loopback/context: ^1.21.4
- @loopback/core: ^1.9.3
- @loopback/metadata: ^1.2.10
- @loopback/openapi-spec-builder: ^1.2.10
- @loopback/openapi-v3: ^1.9.4
- @loopback/repository-json-schema: ^1.9.5
- @loopback/repository: ^1.12.0
- @loopback/rest: ^1.17.0
- @loopback/testlab: ^1.7.4
- @loopback/docs: ^1.29.3
- @loopback/example-hello-world: ^1.2.11
- @loopback/example-log-extension: ^1.2.11
- @loopback/example-rpc-server: ^1.2.11
- @loopback/example-todo: ^1.7.4
- @loopback/example-soap-calculator: ^1.6.12
- @loopback/service-proxy: ^1.3.3
- @loopback/http-caching-proxy: ^1.1.10
- @loopback/http-server: ^1.4.10
- @loopback/example-todo-list: ^1.9.4
- @loopback/dist-util: ^0.4.0
- @loopback/rest-explorer: ^1.3.4
- @loopback/eslint-config: ^4.0.1
- @loopback/example-express-composition: ^1.5.4
- @loopback/example-greeter-extension: ^1.3.11
- @loopback/booter-lb3app: ^1.2.11
- @loopback/example-lb3-application: ^1.1.11
- @loopback/example-greeting-app: ^1.1.11
- @loopback/example-context: ^1.2.11
- @loopback/repository-tests: ^0.4.2
- @loopback/extension-health: ^0.2.3
- @loopback/authorization: ^0.2.0