Как создать вложенный массив в realm без ключа (React Native)

#reactjs #mobile #realm #native

#reactjs #Мобильный #царство #родной

Вопрос:

 {
    "a": [
        [
            {
              "_id": "57e55b64016c3551c025abc1",
              "title": "Main Campus"
            },
            {
              "_id": "5810e2e27064497f74ad4874",
              "title": "Ahm Campus"
            },
            {
              "_id": "5d5d2633a1d0680620ac3cce",
              "title": "Baroda"
            },
            {
              "_id": "5d5d3af3a1d0680620ac3ef8",
              "title": "India"
            }
          ],
          [
            {
              "_id": "57e55b64016c3551c025abc1",
              "title": "Main Campus"
            },
            {
              "_id": "5810e2e27064497f74ad4874",
              "title": "Ahm Campus"
            },
            {
              "_id": "5d5d2633a1d0680620ac3cce",
              "title": "Baroda"
            },
            {
              "_id": "5d5d3af3a1d0680620ac3ef8",
              "title": "India"
            }
          ]

    ]
  }
 

Как создать схему в области (React native) для этого типа объекта JSON. Я перепробовал все возможные способы, но не нашел никакого конкретного решения. По сути, это вложенный массив, где второй массив не имеет какого-либо определенного ключа (я пробовал с ключом, он работает нормально, но я хочу сделать это без добавления ключа).

Ответ №1:

Вы можете использовать что-то вроде:

 const ParentSchema = {
  name: "parent",
  properties: {
    key: "string",
    values: "Value[]"
  }
};

const ValueSchema = {
  name: "Value",
  embedded: true,
  properties: {
    _id: "string",
    title: "string"
  }
};
 

Вы можете вставлять такие объекты, как:

 realm.write(() => {
  realm.create("Parent", { key: "a", values: [
      { _id: "57e55b64016c3551c025abc1", title: "Main Campus" },
      { _id: "5810e2e27064497f74ad4874", title: "Ahm Campus" }
    ]
  });
});
 

Документация: https://docs.mongodb.com/realm/node/data-model

Комментарии:

1. Привет @geisshirt Спасибо за ответ, но я не хочу добавлять «значение» возможно ли сделать то же самое, не имея значения? Я хочу отправить данные JSON так же, как я опубликовал в вопросе

2. В настоящее время вы не можете, но github.com/realm/realm-js/issues/3392 возможно, это вас заинтересует.

Ответ №2:

На данный момент нет способа вставить прямое значение в базу данных Realm без ключа, поэтому сейчас нам нужно изменить данные, а затем мы можем сохранить их в следующей схеме.

 const ParentSchema = {
  name: "parent",
  properties: {
   a: "level[]"
  }
};

const level = {
    name: 'level',
    properties: {
        level: 'sites[]'
    }
}
const sites = {
    name: 'sites',
    properties: {
        sites: 'site[]'
    }
}
const site = {
    name: 'site',
    properties: {

        title: 'string?',
        _id: 'string?',
        version: 'int?',
    }
}
 

Модификацию данных необходимо выполнить следующим образом.

 var a = {
    level: []
 }

data.a.map((Site, index) => {
         const sites = []
         Site.map((s) => { sites.push(s)})
         a.level.push({sites})
 })