Menu Docs

Página inicial do DocsDesenvolver aplicaçõesAtlas Device SDKs

Misto - React Native SDK

Nesta página

  • Realm Object Models
  • Criar um objeto com um valor misto
  • query para objeto com valor misto
  • propriedade mistas e verificação de tipo

Novidades na versão realm@10.5.0.

O tipo de dados Misto é um tipo de propriedade Realm que pode conter qualquer tipo de dados Realm válido, exceto uma collection. Você pode criar collection (listas, conjuntos e dicionários) do tipo mixed, mas o tipo mixed em si não pode ser uma collection.

O tipo Misto é indexável, mas você não pode usá-lo como chave primária.

As propriedades que usam o tipo Misto podem conter valores nulos e não podem ser definidas como opcionais. Todas as instâncias do tipo JavaScript Number em um tipo Realm Misto são mapeadas para o tipo Realm double .

Para definir uma propriedade do seu Realm Object Model como Misto, defina o tipo da propriedade como mixed.

Crie um objeto com um valor Misto usando o novo operador dentro de uma transação escrita.

No exemplo CreateCatsInput seguinte, criamos vários Objeto de Realm Cat com um tipo Misto para o campo birthDate .

O componente CreateCatsInput faz o seguinte:

  • Obter acesso a uma instância de realm aberta chamando a função hook useRealm().

  • Use o useEffect do React gancho
    para chamar uma função anônima apenas uma vez com useEffect e um array de dependência vazia.
  • Na função anônima, criamos quatro objetos Cat diferentes por
    usando o operador new para criar um novo Objeto de Realm dentro de uma transação de escrita. Cada um dos objetos Cat utiliza um tipo de dados diferente para a propriedade birthDate .
  • Use o hook useQuery() para recuperar todos os objetos Cat .

  • Map através dos gatos para renderizar
    uma lista de componentes Text exibindo name e birthDate de cada cat.

Para executar query de objetos com um valor misto, execute o método Collection.filtered() e passe um filtro para um campo não misto. Em seguida, você pode imprimir o valor da propriedade Mixed ou de todo o objeto.

No exemplo CatInfoCard a seguir, fazemos uma query para um objeto Cat usando o nome do cão.

O componente CatInfoCard faz o seguinte:

  • Obtenha todos os objetos Cat passando a classe Cat para o gancho useQuery() e, em seguida, use filtered() para filtrar os resultados para receber somente os gatos cujos nomes correspondem ao nome passado como um suporte. Em seguida, obtemos o primeiro cão correspondente e o armazenamos como uma variável constante.

  • Use a notação de ponto para recuperar a propriedade Misto, birthDate.

  • Exiba o nome e a data de nascimento do cão no método de renderização se o Realm encontrar o cão. Se não houver nenhum cão que corresponda ao nome passado ao componente como suporte, renderizamos o texto "Gato não encontrado".

Como as propriedades mistas podem ser mais de um tipo, você não pode confiar em que o valor da propriedade seja de um tipo específico.

Com Object.getPropertyType(), você pode obter o tipo subjacente de uma propriedade Misto. Isso permite que você crie sua própria verificação de tipo.

// Use Type Predicates and Object.getPropertyType() to
// create a runtime type check for Mixed properties.
const isString = (
val: Mixed,
name: string,
object: Realm.Object,
): val is Realm.Types.String => {
return object.getPropertyType(name) === 'string';
};
type CatInfoCardProps = {catName: string};
const CatInfoCard = ({catName}: CatInfoCardProps) => {
const cat = useQuery(
Cat,
cats => {
return cats.filtered(`name = '${catName}'`);
},
[catName],
)[0];
// Use the type check to handle your data.
const catBirthDate = isString(cat.birthDate, 'birthDate', cat)
? cat.birthDate
: cat.birthDate.toString();
if (cat) {
return (
<>
<Text>{catName}</Text>
<Text>{catBirthDate}</Text>
</>
);
} else {
return <Text>Cat not found</Text>;
}
};
← Conjuntos - React Native SDK