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}
。我不确定这是否可行,因为没有相关文档。