Dados do modelo - Node.js SDK
Tipos e esquemas de objetos
Cada Objeto de Realm está em conformidade com um tipo de objeto específico , que é essencialmente uma classe que define as propriedades e osrelacionamentos para objetos desse tipo usando um esquema predefinido. O Realm garante que todos os objetos em um Realm estejam em conformidade com o esquema do seu tipo de objeto e valida os objetos sempre que eles são criados, modificados ou excluídos.
Os objetos de Realm são fundamentalmente semelhantes a um objeto JavaScript comum, mas também trazem alguns recursos adicionais, como validação de esquema e queries em tempo real. A memória do Node.js SDK mapeia os objetos de Realm diretamente para objetos JavaScript nativos, o que significa que não há necessidade de usar uma biblioteca especial de acesso a dados, como um ORM. Em vez disso, você pode trabalhar com objetos de Realm como faria com qualquer outro objeto.
A classe a seguir contém um esquema que define um Tipo de objeto de Realm Car
com as propriedade id
, make
, model
e miles
. Também define uma chave primária.
class Car extends Realm.Object { static schema = { name: "Car", properties: { _id: { type: "objectId", default: () => new Realm.BSON.ObjectId() }, make: "string", model: "string", miles: "int?", }, primaryKey: "_id", }; }
Esquema de Realm
Um esquema de domínio é uma lista de esquemas de objeto válidos que um domínio pode conter. Cada Objeto de domínio deve estar em conformidade com um Tipo de objeto de domínio incluído no esquema de seu Realm.
Se um domínio já contiver dados quando você abri-lo, o Realm validará cada objeto para garantir que um esquema de objeto tenha sido fornecido para seu tipo e que atenda a todas as restrições especificadas no esquema.
Um domínio que contém dados básicos sobre carros e fabricantes pode usar um esquema como o seguinte:
class Manufacturer extends Realm.Object { static schema = { name: "Manufacturer", properties: { _id: "objectId", // A manufacturer that may have many cars cars: "Car[]", }, }; } class Car extends Realm.Object { static schema = { name: "Car", properties: { _id: "objectId", make: "string", model: "string", miles: "int?", }, }; }
Relacionamentos
O Realm permite definir relacionamentos explícitos entre os tipos de objeto em um aplicativo. Um relacionamento é uma propriedade de objeto que faz referência a outro Tipo de objeto de Realm. Você pode definir relacionamentos definindo a propriedade de um objeto no esquema de propriedade .
Relacionamentos são referências diretas a outros objetos em um domínio. Você não precisa unir tabelas nem criar junções para definir um relacionamento como faria em um banco de dados relacional. Em vez disso, você pode acessar objetos relacionados lendo e gravando na propriedade que define a relação.
O Realm executa operações de leitura lentamente à medida que elas entram. Consultar um relacionamento é tão eficiente quanto ler uma propriedade regular.
Existem três tipos principais de relacionamentos entre objetos:
Observação
Realm versus outros bancos de dados
Os objetos geralmente contêm referências diretas a outros objetos. Ao trabalhar com objetos e referências, você geralmente copia do armazenamento do banco de dados de dados para a memória do aplicação . Essa situação deixa o desenvolvedor com uma escolha do que copiar para memória:
Você pode copiar todo o objeto referenciado antes do tempo. Isso significa que todos os dados referenciados estão sempre disponíveis rapidamente, mas podem usar muitos recursos. Dependendo da quantidade de memória disponível, isso pode não ser desejável.
Você pode copiar somente um valor de chave estrangeira para cada objeto com antecedência, que pode ser usado para consultar o objeto completo, se ele for necessário. Essas pesquisas referenciadas são eficientes em termos de memória. No entanto, eles exigem mais código de query e muitas pesquisas podem atrasar seu aplicativo.
A arquitetura de query do Realm evita a compensação entre uso de memória e sobrecarga computacional. Em vez disso, as queries do Realm podem fazer referência direta a objetos relacionados e suas propriedades no disco.