loopbackjs удаленный разъем не возвращает идентификаторы - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть приложение nodejs, которое пытается соединиться с сервером обратной связи

У меня есть следующие источники данных

{
    "db": {
        "name": "db",
        "connector": "memory"
    },
    "remoteDS": {
        "url": "http://localhost:3033/api",
        "name": "remoteDS",
        "connector": "remote"
    }
}

с использованием loopback-connector-remote

у меня common/models/pack.json

{
    "name": "pack",
    "plural": "packs",
    "base": "PersistedModel",
    "idInjection": true,
    "properties": {},
    "validations": [],
    "relations": {},
    "acls": [],
    "methods": {}
}

и мой test.js

var app = require('./client/client');
app.models.Pack.create({foo: 'bar'})
    .then(result => {
        console.log(result); // { foo: 'bar', id: NaN }
        return app.models.Pack.find()
    })
    .then(result => {
        console.log(result); // [{ foo: 'bar', id: NaN }]
    })
    .catch(err => {
        console.error(err.message);
    })

Не знаю, почему id: NaN

Когда я пытаюсь через API Explorer, у меня есть идентификатор

[
  {
    "foo": "bar",
    "id": "5bdaf67aed811700149e4549"
  }
]

1 Ответ

0 голосов
/ 01 ноября 2018

Попробуйте использовать в качестве вашего common/models/pack.json

{
    "name": "pack",
    "plural": "packs",
    "base": "PersistedModel",
    "idInjection": false,
    "properties": {
        "id": {
            "type": "String",
            "id": 1
        }
    },
    "validations": [],
    "relations": {},
    "acls": [],
    "methods": {}
}

Loopback добавляет свойство id как число , поэтому он может пытаться проанализировать значение Id при создании. Возможно, соединитель REST создает его и запрашивает?

По умолчанию, если свойства идентификатора не определены, а свойство idInjection равно true (или не задано, поскольку по умолчанию установлено значение true), LoopBack автоматически добавляет свойство id в модель следующим образом:

id: {type: Number, генерируется: true, id: true}

...