# Table.find()

Table.find()


如果你想在数据库中查找数据,还可以使用 Table.find() 方法:


const data = [
   {
       name: 'luke',
       age: 22
   },
   {
       name: 'elaine',
       age: 23
   }
];

user.addMany(data)
 .then(() => {
   user.find((item) => {
       return item.age > 22;
   })
     .then((data) => console.log(data))
     // { name: 'elaine', age: 23 }
 }); 


Table.find(fn) 接受一个函数 fn 作为参数,这个函数的返回值应当为 truefalse


用法其实和 JS 数组方法 Array.find() 如出一辙


这个方法在内部会从头遍历整个表(使用 IndexedDB 的 Cursor),然后把每一次的结果放进 fn 执行,如果 fn 的返回值为 true(内部使用 if(fn()) 判断),就返回当前的结果,停止遍历


这个方法只会返回第一个满足条件的值,如果需要返回所有满足条件的值,请使用 Table.findAll(),用法与 Table.find() 一致,但是会返回一个数组,包含所有满足条件的值



Table.find() 与 Table.get() 的区别

  • find()​ 使用判断函数 + 遍历表的方法
    • 使用上更灵活,因为判断函数由用户决定
  • ​get()​ 使用数据库索引进行搜索
    • 性能更高,尤其是在大量数据中进行搜索的时候