Вставить данные в массив в петлевой модели - PullRequest
0 голосов
/ 21 мая 2019

Я новичок в Loopback и работаю над проектом, в котором у меня есть следующие Модель и Документ.

{
    "_id" : ObjectId("5c9b44cc618c1bbe8780e38b"),
    "userId" : ObjectId("5bae3ea215e11e0018b914c1"),
    "providers" : [ 
        "1629132790", 
        "1467401216", 
        "1356405641", 
        "1952465288", 
        "1447314513", 
        "1003803495"
    ],
    "countByType" : {
        "doctors" : 2,
        "laboratories" : 3,
        "hospitals" : 1,
        "imagingCenters" : 0
    }
}

Я в основном пытаюсь добавить новый элемент в массив в базовом классе Model. Когда создается новый пользователь, для «провайдеров» добавляется пустой массив. Там нет модели для поставщиков. Это просто массив, который может содержать список провайдеров.

Как мне добавить новый идентификатор провайдера в список провайдеров, если там нет провайдера (добавить строку в список)?

Это моя модель провайдера

{
  "name": "UserProviders",
  "base": "Model",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "userId": {
      "type": "objectId",
      "required": true,
      "index": {
        "unique": true
      }
    },
    "providers": {
      "type": [
        "any"
      ],
      "default": []
    },
    "countByType": {
      "type": "object",
      "default": {
        "doctors": 0,
        "labs": 0,
        "hospitals": 0,
        "imagingCenters": 0
      }
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

Любая помощь будет очень признательна.

1 Ответ

1 голос
/ 21 мая 2019

Я бы сделал две вещи: во-первых, я бы добавил собственный метод модели для добавления нового поставщика (который принимает как одну строку, так и массив строк), например:

const provider = async Provider.findOne({id: someId});
provider.addProviders([value1, value2]);
await provider.save();

Затем, чтобы убедиться, что он не будет сохранять мусорные значения, я бы добавил специальный валидатор, который проверяет наличие дубликатов в массиве перед сохранением экземпляра и выдает ошибку или удаляет дубликаты. Вы можете прочитать здесь , как добавить пользовательскую функцию проверки в вашу модель.

...