Menu Docs
Página inicial do Docs
/ /
Tipos de dados

Dicionários - SDK do Node.js

Novidades na versão 10.5.0.

Você pode usar o dictionary tipo de dados para gerenciar uma coleção de chaves de string únicas emparelhadas com valores. Os dictionary dados mapeiam para o tipo deobjeto do Javascript.

Para definir um dicionário de valores mistos em seu esquema, configure o tipo de dados do seu campo para um objeto vazio, "{}". Alternativamente, para criar um dicionário com valores de um tipo específico, adicione o tipo de dados antes dos colchetes. Por exemplo, "int{}" para especificar que os valores do dicionário devem ser inteiros ou "string{}" para especificar que os valores do dicionário devem ser strings.

const PersonSchema = {
name: "Person",
properties: {
name: "string",
home: "{}",
},
};

O Realm não permite o uso de . ou $ caracteres em chaves de mapa. Você pode usar a codificação e a decodificação percentual para armazenar uma chave de mapa que contenha um desses caracteres não permitidos.

// Percent encode . or $ characters to use them in map keys
const mapKey = "kitchen.windows";
const encodedMapKey = mapKey.replace(".", "%2E");

Crie um objeto com um valor de dicionário executando o método realm.create() dentro de uma transação de gravação.

let johnDoe;
let janeSmith;
realm.write(() => {
johnDoe = realm.create("Person", {
name: "John Doe",
home: {
windows: 5,
doors: 3,
color: "red",
address: "Summerhill St.",
price: 400123,
},
});
janeSmith = realm.create("Person", {
name: "Jane Smith",
home: {
address: "100 northroad st.",
yearBuilt: 1990,
},
});
});

Para filtrar uma query, execute collection.filtered() para especificar um subconjunto de resultados com base no(s) valor(es) de uma ou mais propriedades de objeto. Você pode especificar resultados com base no valor das propriedades de um dicionário usando a notação entre colchetes.

Você também pode determinar se uma coleção de resultados tem uma determinada chave ou valor utilizando <dictionary>.@keys ou <dictionary>.@values. Por exemplo, se você tivesse uma coleção Person com um dicionário home aninhado, poderia retornar todos os objetos Person com home com uma propriedade "price" executando a consulta: home.@keys = "price".

// query for all Person objects
const persons = realm.objects("Person");
// run the `.filtered()` method on all the returned persons to
// find the house with the address "Summerhill St."
const summerHillHouse = persons.filtered(
`home['address'] = "Summerhill St."`
)[0].home;
// Find all people that have a house with a listed price
const peopleWithHousesWithAListedPrice = persons.filtered(
`home.@keys = "price" `
);
// find a house that has any field with a value of 'red'
const redHouse = persons.filtered(`home.@values = "red" `)[0].home;

Você pode adicionar um ouvinte a um dicionário executando o arquivo dictionary.addListener() método. A função de retorno de chamada do método addListener tem dois parâmetros, o dicionário alterado e uma array de alterações descrevendo como o dicionário foi alterado.

Observação

summerHillHouse.addListener((changedHouse, changes) => {
console.log("A change has occurred to the Summer Hill House object");
});

Para atualizar as propriedades de um dicionário, utilize notação de ponto ou o método dictionary.put().

realm.write(() => {
// use the `set()` method to update a field of a dictionary
summerHillHouse.set({ price: 400100 });
// alternatively, update a field of a dictionary through dot notation
summerHillHouse.color = "brown";
// update a dictionary by adding a field
summerHillHouse.yearBuilt = 2004;
});

Para excluir membros de um dicionário, use o método dictionary.remove() com uma array de propriedades a serem removidas do dicionário.

realm.write(() => {
// remove the 'windows' and 'doors' field of the Summerhill House.
summerHillHouse.remove(["windows", "doors"]);
});

Voltar

Contadores

Nesta página