Página inicial do Docs → Desenvolver aplicações → Atlas Device SDKs
Misto - React Native SDK
Nesta página
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
.
Realm Object Models
Para definir uma propriedade do seu Realm Object Model como Misto, defina o tipo da propriedade como mixed
.
Criar um objeto com um valor misto
Crie um objeto com um valor Misto usando o novo operador dentro de uma transação escrita.
Exemplo
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 objetosCat
utiliza um tipo de dados diferente para a propriedadebirthDate
.
- Na função anônima, criamos quatro objetos
Use o hook
useQuery()
para recuperar todos os objetosCat
.- Map através dos gatos para renderizar
- uma lista de componentes
Text
exibindoname
ebirthDate
de cada cat.
query para objeto com valor misto
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.
Exemplo
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 classeCat
para o ganchouseQuery()
e, em seguida, usefiltered()
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".
propriedade mistas e verificação de tipo
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>; } };