Модель петлевой модели JSON - PullRequest
0 голосов
/ 27 июня 2019

В настоящее время я использую LoopbackJS 3. Я пытаюсь определить свойства JSON своей модели для модели под названием «Ответы».Я не понимаю, как можно обрабатывать массив объектов.

    Model.defineProperty('answers', {
        type: [{
            type: {
                type: {
                    type: String,
                    default: "text",
                    required: true
                },
                message : {
                    type: String,
                    required: true
                }
            },
            type: {
                type: {
                    type: String,
                    default: "image",
                    required: true
                },
                path : {
                    type: String,
                    required: true
                }
            }         
        }],
        required : false
    });

Я ожидаю увидеть что-то вроде этого:

"answers": [
    {
      "type": "text",
      "message": "string"
    },
    {
      "type": "image",
      "path": "string"
    }
  ]

Но на самом деле loopback покажет мне просто:

"answers": [
    {
      "type": "image",
      "path": "string"
    }
  ]

1 Ответ

0 голосов
/ 02 июля 2019

Это ожидается.У определенных вами объектов дважды есть ключ "type".

screenshot

У объектов не может быть дважды одинакового ключа, сохраняется только последний.Я бы посоветовал использовать loopback-cli для генерации моделей.

Я не уверен, что вы можете определить массив двух разных типов.Все примеры, использующие массивы, определяют один тип

['string'] 
[{type: 'string', required: true}]

Я думаю, у вас есть два простых варианта:

  1. определение элемента модели

    elementType: "строка" (вы можете указывать перед сохранением elementType === "текст" или "изображение"
    значение: строка

  2. Использовать эти отношения

    Элемент принадлежит к теме
    Тема имеет много элементов

const thread = new Thread(...)
thread.answers = [
   {type: "text", value: "..."},
   {type: "image", value: "..."}
]

Надеюсь, это поможет!

...