#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})
})