Estoy trabajando en el reino para que funcione sin conexión como base de datos local en Electron. Ahora quiero unirme (agregación), así que definí una relación entre dos esquemas, pero luego los datos no se sincronizan. Sería genial obtener ayuda.
Aquí está mi esquema:
const articleMetaSchema = { name: 'articlemeta', properties: { _id: 'objectId?', catalog_id: 'objectId?', content: 'objectId?', createdAt: 'date?', description: 'string?', main_image_url: 'string?', origin_type: 'string?', pub_date: 'date?', publication: 'objectId?', sub_title: 'string?', title: 'string?', updatedAt: 'date?', url: 'string?' }, primaryKey: '_id' } const articleSchema = { name: 'article', properties: { _id: 'objectId?', active_search: 'bool?', article_meta: 'articlemeta?', catalog_id: 'objectId?', content: 'objectId?', createdAt: 'date?', flagged: 'bool?', owner_id: 'objectId?', rating: 'int?', read: 'bool?', status: 'string?', status_updated_at: 'date?', updatedAt: 'date?' }, primaryKey: '_id' } config = { schema, path: getDBPath(), sync: { user: app.currentUser, partitionValue: new ObjectID(getCatalogId()), error: (error) => { console.log(error.name, error.message) } } } let realm = await Realm.open(config) // queryQuiero consultar y obtener el resultado del artículo y en el esquema del artículo hemos definido una clave 'article_meta' que es y objectId. Ahora quiero el resultado del artículo con todas las propiedades con article_meta como un objeto obtenido sobre la base de (article.article_meta = articlemeta._id)
Resultado Esperado:
[{ _id: '1', catalog_id: '', content: '', createdAt: '', main_image_url: '', origin_type: '', pub_date: '', publication: '', sub_title: '', title: '', updatedAt: '', url: '', article_meta: {} }, {..}, {..}]Los objetos de reino pueden hacer referencia a objetos de reino 'unidos' a través de la notación de puntos. de los documentos
Filtrar por propiedades de objetos relacionados e incrustados
Para filtrar una consulta en función de una propiedad de un objeto incrustado o un objeto relacionado, utilice la notación de puntos como si fuera un objeto anidado normal.
Entonces, por ejemplo, un objeto Persona tiene un objeto Perro como una de sus propiedades y desea obtener el nombre de los perros de esos pesos.
Obtengamos una persona específica por su _id
const person = realm.objectForPrimaryKey("Person", 1234)si entonces queremos el nombre de los perros de las personas
const dogName = person.dog.dog_nameEn su caso, puede obtener un artículo específico y luego acceder a todas las metapropiedades del artículo usando la notación de puntos
const article = realm.objectForPrimaryKey("article", 1234)y luego acceder al resto de las propiedades a través de la notación de puntos
const id = article._id const catalogId = article.catalog_id const mainImageUrl = article.article_meta.main_image_urlComo puede ver, no se necesita una consulta (para este ejemplo) ya que los objetos Realm conocen sus propias propiedades secundarias y se puede acceder a ellos a través de la notación de puntos.