Feathers 查询 Query

所有官方数据库适配器都支持查询,排序,限制和选择find方法调用的常用方法params.query。查询也适用updatepatch并且remove如果该方法调用id设置为null

重要提示:通过REST URL使用时,所有查询值都是字符串。根据服务的不同,params.query可能必须在before挂钩中将值转换为正确的类型。

Equity

不包含特殊查询参数的所有字段将直接进行相等性比较。

// Find all unread messages in room #2
app.service('messages').find({
  query: {
    read: false,
    roomId: 2
  }
});
GET /messages?read=false&roomId=2

$limit

$limit 将仅返回您指定的结果数:

// Retrieves the first two unread messages
app.service('messages').find({
  query: {
    $limit: 2,
    read: false
  }
});
GET /messages?$limit=2&read=false

临提示:由于启用了分页,先手的设置可记录数$limit0。这将仅对数据库运行(快速)计数查询,并返回带有totaldata数组的页面对象。

$skip

$skip 将跳过指定数量的结果:

// Retrieves the next two unread messages
app.service('messages').find({
  query: {
    $limit: 2,
    $skip: 2,
    read: false
  }
});
GET /messages?$limit=2&$skip=2&read=false

$sort

$sort将根据您提供的对象进行排序。它可以包含一个属性列表,通过该列表可以对映射到顺序(1升序,-1降序)进行排序。

// Find the 10 newest messages
app.service('messages').find({
  query: {
    $limit: 10,
    $sort: {
      createdAt: -1
    }
  }
});
/messages?$limit=10&$sort[createdAt]=-1

$select

$select允许选择要包含在结果中的字段。这适用于任何服务方法。

// Only return the `text` and `userId` field in a message
app.service('messages').find({
  query: {
    $select: [ 'text', 'userId' ]
  }
});

app.service('messages').get(1, {
  query: {
    $select: [ 'text' ]
  }
});
GET /messages?$select[]=text&$select[]=userId
GET /messages/1?$select[]=text

$in,$nin

查找属性所做的所有记录 $in 或不 $nin 符合任何给定值的记录。

// Find all messages in room 2 or 5
app.service('messages').find({
  query: {
    roomId: {
      $in: [ 2, 5 ]
    }
  }
});
GET /messages?roomId[$in]=2&roomId[$in]=5

$lt,$lte

查找值小于(lte)到给定值的所有记录。

// Find all messages older than a day
const DAY_MS = 24 * 60 * 60 * 1000;

app.service('messages').find({
  query: {
    createdAt: {
      $lt: new Date().getTime() - DAY_MS
    }
  }
});
GET /messages?createdAt[$lt]=1479664146607

$gt,$gte

查找值为more($gt)或更多且等于($gte)的所有记录到给定值。

// Find all messages within the last day
const DAY_MS = 24 * 60 * 60 * 1000;

app.service('messages').find({
  query: {
    createdAt: {
      $gt: new Date().getTime() - DAY_MS
    }
  }
});
GET /messages?createdAt[$gt]=1479664146607

$ne

查找不等于给定属性值的所有记录。

// Find all messages that are not marked as archived
app.service('messages').find({
  query: {
    archived: {
      $ne: true
    }
  }
});
GET /messages?archived[$ne]=true

$or

查找符合任何给定条件的所有记录。

// Find all messages that are not marked as archived
// or any message from room 2
app.service('messages').find({
  query: {
    $or: [
      { archived: { $ne: true } },
      { roomId: 2 }
    ]
  }
});

GET /messages?$or[0][archived][$ne]=true&$or[1][roomId]=2

搜索

搜索不是常见查询语法的一部分,因为它非常特定于您正在使用的数据库。许多数据库已经支持自己的搜索语法:

  • Mongoose,MongoDB和NeDB的正则表达式(在钩子中转换)。看到这个评论
    • 对于MongoDB,也可以看到feather-mongodb-fuzzy-search
    • 对于NeDB,也可以看到feather-nedb-fuzzy-search
  • Sequelize的$like,可以在params.sequelize中设置
  • 某些数据库适配器(如KnexJS,RethinkDB和Elasticsearch)也支持非标准查询参数,这些参数在其文档页面中进行了描述。
  • 有关其他搜索功能,请参阅feathers-solr

你可能感兴趣的:(Feathers 查询 Query)