在领域db上实现一种形式的连接查询,而在结构

时间:2015-07-25 16:21:44

标签: android realm

我已经使用了SQL引擎和一些noSQL引擎以及indexdb,并且可以在不定义外键或其他内容的情况下跨数个表抓取数据。

我的问题是,是否可以进行查询以在Realm中跨对象表刮取数据而不在结构中定义任何特殊关系?为了更好地表达自己,我将发布我想要用Realm实现的示例代码,以便您可以帮助我。

使用dexie,indexdb包装器

实现
 db.quote_items.where('quote_id').equals(quote_id).then(function(a){
       db.products.where('id').equals(quote_id.product_id).then(function(){
           list.push({'id': a.id, 'product_name':a.product_name, 'product_code': a.product_code, 'quantity':a.quantity,  'tax':a.tax, 'unit_price':a.unit_price, 'val_tax':a.val_tax, 'discount_val':a.discount_val, 'gross_total':a.gross_total, 'details ':b.details   });

       }).catch(function (e) { console.log(e); alert("Sorry, Something went wrong"); })
   }).catch(function (e) { console.log(e); alert("Sorry, Something went wrong");})

在mysql中实现

    SELECT quote_items.id AS id, quote_items.product_name AS product_name ...... FROM quote_items, products WHERE quote_items.quote_id = quote_id AND products.id = quotes_items.produc_id 

Realm.io for Android中的预期实现

  RealmResults result = realm.where(quote_items.class)
            .equalTo("quote_id", quote_id).equalTo("quote.product_id", quote_id).equalTo("product.product_id", "quotes.itemkey").findAll()

1 个答案:

答案 0 :(得分:5)

虽然Realm是一个NoSQL数据库,但它仍然有一个模式,因此你不能在同一个查询中返回多个类。

你要求的东西可以通过一个带有共享字段的抽象超类来解决。这还没有实现,但您可以在此处跟进进度:https://github.com/realm/realm-java/issues/761

此外,JOINS并不存在于Realm中,因为它不是关系数据库,而更像是图形数据库。对其他对象的引用就像对象引用一样。您可以在此处阅读更多内容:https://realm.io/docs/java/latest/#relationships