CRUD - 读取 - Node.js SDK
Atlas Device SDK 已弃用。 有关详细信息,请参阅弃用页面。
按主键查找特定对象
如果您知道给定对象的主键,则可以直接使用 Realm.objectForPrimaryKey() 进行查找。
const myTask = realm.objectForPrimaryKey("Task", 12342245); // search for a realm object with a primary key that is an int.
查询 Realm 对象类型
要在域中查询给定类型的对象,请将类型名称传递给Realm.objects()。
查询操作以Realm.Results对象的形式返回与查询匹配的 Realm 对象集合。 基本查询会匹配 Realm 中给定类型的所有对象,但您也可以对集合应用筛选器以查找特定对象。
// Query realm for all instances of the "Task" type. const tasks = realm.objects("Task");
筛选查询
过滤器根据一个或多个对象属性的值选择结果子集。Realm 允许您使用 Realm 查询语言过滤数据,这是一种基于字符串的查询语言,用于在从 Realm 检索对象时限制搜索。
要筛选查询,请对查询结果集合调用filtered() 。 将 RQL 查询作为参数传递给 filtered()
。
在以下示例中,我们使用查询引擎的比较操作符执行以下操作:
通过将
priority
属性值与阈值数字进行比较来查找高优先级任务,而高于该阈值的优先级可视为高优先级。通过查看
progressMinutes
属性是否在特定范围内来查找刚刚启动或短时间运行的任务。
// retrieve the set of Task objects const tasks = realm.objects("Task"); // filter for tasks with a high priority const highPriorityTasks = tasks.filtered("priority > $0", 5); // filter for tasks that have just-started or short-running progress const lowProgressTasks = tasks.filtered( "$0 <= progressMinutes && progressMinutes < $1", 1, 10 ); console.log( `Number of high priority tasks: ${highPriorityTasks.length} \n`, `Number of just-started or short-running tasks: ${lowProgressTasks.length}` );
对查询结果进行排序
排序操作允许您配置 Realm 返回查询对象的顺序。您可以根据结果集合中对象的一个或多个属性进行排序。仅当您对结果进行显式排序时,Realm 才能保证结果顺序一致。
要对查询进行排序,请对查询结果集合上调用 sorted() 方法。
// retrieve the set of Task objects const tasks = realm.objects("Task"); // Sort tasks by name in ascending order const tasksByName = tasks.sorted("name"); // Sort tasks by name in descending order const tasksByNameDescending = tasks.sorted("name", true); // Sort tasks by priority in descending order and then by name alphabetically const tasksByPriorityDescendingAndName = tasks.sorted([ ["priority", true], ["name", false], ]); // Sort dogs by dog's owner's name. let dogsByOwnersName = realm.objects("Dog").sorted("owner.name");