React-Native中的领域子查询

React-Native中的领域子查询,react-native,realm,React Native,Realm,我是新来的。我有如下模式: class MealItem {} MealItem.schema = { name: 'MealItem', properties: { mealId: {type: 'int'}, foodId: {type: 'int'}, }, }; 我想做的工作相当于: SELECT mealId FROM MealItem WHERE foodId = @food1 AND mealId IN (SELECT

我是新来的。我有如下模式:

class MealItem {}
MealItem.schema = {
    name: 'MealItem',
    properties: {
        mealId: {type: 'int'},
        foodId: {type: 'int'},
    },
};
我想做的工作相当于:

SELECT
  mealId
FROM MealItem
WHERE foodId = @food1
AND mealId IN (SELECT mealId FROM MealItem WHERE foodId = @food2
AND mealId IN (SELECT mealId FROM MealItem WHERE foodId = @food3))
除了为循环编写大量javascript之外,我不知道从哪里开始。有没有一种不那么冗长的方法

更多信息

基本上,我还有两个类似的对象:

class Meal {}
Meal.schema = {
    name: 'Meal',
    properties: {
        mealId: {type: 'int'},
        mealName: {type: 'string'},
    },
};
class Food{}
Food.schema = {
    name: 'Food',
    properties: {
        foodId: {type: 'int'},
        foodName: {type: 'string'},
    },
};
因此,我最初的查询是为了确定是否有3种不同的食物,我的餐厅是否为其提供一餐/套餐

例如,如果您将food1设置为巨无霸,food2设置为薯条,food3设置为软饮料,则您应该得到一顿名为巨无霸餐的饭


如果将food1设置为榴莲,将food2设置为热袋,将food3设置为Krusty品牌仿制粥,则不会返回用餐id,因为我的餐厅不提供那样的套餐。

我对SQL不太了解,但我从你的问题中了解到的是,你正在尝试寻找包含特定食物的膳食

领域查询和模型的工作方式类似于NoSQL数据库,因此在创建模型时可能需要考虑一些不同的问题

例如,假设您有3个表。一个包含餐食,一个包含食物,一个包含关于哪个
MealId
包含哪个
FoodId
的数据。在领域中,您不需要3表。您可以认为它是一个javascript对象

范例

const meal = {
  mealId: 0001,
  name: 'Big Fat Menu',
  price: '4.99'
  foods: [{
    foodId: 11,
    name: 'Burger'
  }, {
    foodId: 12,
    name: 'Fries'
  }, {
    foodId: 13,
    name: 'Coke'
  }]
}
这个javascript对象可以用如下领域建模

const FoodSchema = {
  name: 'Food',
  primaryKey: 'foodId',
  properties: {
    foodId: 'string'
    name: 'string',
  }
};

const MealsSchema = {
  name: 'Meal',
  primaryKey: 'mealId',
  properties: {
    mealId: 'string'
    name: 'string',
    price: 'double',
    foods: { type: 'list', , objectType: 'Food'}
  }
};
使用此模式,您可以进行以下查询以获取包含特定食物的膳食

const meals = realm..objects('Meal').filtered(`foods.id == ${foodId}`)

这只是一个小例子,可以帮助您解决一些问题。希望能有所帮助。

请你再解释一下你在查询结果中取得了什么成果好吗?@bennygenel ok刚刚给我的问题添加了更多的解释是
${foodId}
和数组?我指的是这条语句
realm..objects('mean')。过滤(
foods.id=${foodId}
。基本上,我只想在我传递的三种食物出现在食物中时返回食物。@John我在给出示例时不认为这是一个数组<代码>过滤的接受使用
。您可以尝试
foods.id=${foodId1}和foods.id=${foodId2}和foods.id=${foodId3}
。我不确定这是否可行,因为没有相关文档。