美文网首页
Feathers 查询 Query

Feathers 查询 Query

作者: 时见疏星 | 来源:发表于2019-08-21 10:39 被阅读0次

    所有官方数据库适配器都支持查询,排序,限制和选择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

    查找值小于(lt)或更小且等于(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
    

    搜索

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

    相关文章

      网友评论

          本文标题:Feathers 查询 Query

          本文链接:https://www.haomeiwen.com/subject/mxxbsctx.html