编写 kintone API 查询语句的基础知识

betsy_yan发表于:2021年07月30日 15:07:20更新于:2023年09月13日 14:26:33

Index

前言

本文是介绍编写查询语句的基础知识。
您可以使用查询语句来获取按特定条件筛选的特定记录。
为了更好地理解如何编写查询语句,这里结合应用来说明。
当然,也可以不使用应用只参考如何编写查询语句,希望本文对您的开发有所帮助。

应用的准备

从kintone应用商店添加“来询管理”。(参考:从 kintone 商城中添加应用

添加此应用后,
1.首先在“更改应用的设置”中更改字段代码,如下所示:

字段名称字段代码
对应时间ResponseDate
对应内容Correspondence

2.其次任意添加几条记录。其中一条记录如下所示:

字段名称
顾客名才望子有限公司
期限2018-02-01

编写查询语句的方法

关于表达式的格式

查询语句主要由下列的形式构成:

<字段代码> <运算符> <值 或 函数>

若希望了解有关查询语句规范的详细信息,以及每个字段可用的运算符和函数,请查阅这里
现在,让我们实际获取记录。本文末尾提供了在 JavaScript 中指定查询语句以获取记录的范例。

指定单行文本框的值

让我们通过指定以下条件来实际获取记录。

  • “顾客名”字段的值是“xx有限公司”(完全一致)
    指定完全匹配的字符串时,请使用“=”运算符,如下所示:

    Customer = "才望子有限公司"
  • 在“顾客名”字段的值中包含“有限公司”(部分一致)
    指定部分匹配的字符串时,请使用“like”运算符,如下所示:

    Customer like "有限公司"

指定下拉菜单的值

让我们通过指定以下条件来实际获取记录。
指定下拉菜单的值时,如下所示请使用“in”和“not in”运算符。
使用“in”和“not in”运算符时,值必须用 () 括起来。

  • “对应状况”字段的值包含“对应中”和“未对应”

    Status in ("对应中","未对应")
  • “对应状况”字段的值不包含“完了”

    Status not in ("完了")

此外,以下字段可以使用“in”、“not in”运算符获取记录,类似于下拉菜单。

  • 复选框

  • 单选框

  • 多选

指定日期字段的值

让我们通过指定以下条件来实际获取记录。

  • “期限”字段的值是“2018-02-01”

    LimitDay = "2018-02-01"

日期字段除了可以指定某一个值也可以指定某一个范围。
让我们通过指定以下条件来实际获取记录。

  • “期限”字段的值从“2018-02-01”到“2018-03-01

     LimitDay >= "2018-02-01" and LimitDay <= "2018-03-01"

因此,当指定多个条件时,使用“and”运算符来连接表达式。

获取表格内字段的值

“=”、“!=”运算符不能用于获取表格内字段的值。
作为替代,必须使用“in”、“not in”运算符。

让我们用以下条件实际来获取下字段吧。

  • “对应时间”字段的值是“2018-01-05 14:00

    ResponseDate in ("2018-01-05T05:00:00Z")

就如“指定日期字段的值”中所述,通常日期字段或日期与时间字段使用“=”、“!=”运算符。但是请注意,表格中不能使用。

以上,我们介绍了指定单个字段的查询语句。接下来介绍如何指定多个字段的方法。

指定多个字段和条件

正如“指定日期字段的值”末尾指定的那样,可以使用“and”、“or”运算符指定多个条件。

首先,让我们使用“and”运算符为查询语句中的多个字段指定条件。

使用“and”指定条件

  • “期限”字段的值在“今天”之前

  • “对应状况”字段的值不包含“完了”

    LimitDay < TODAY() and Status not in ("完了")

指定“期限”字段的条件为“TODAY()”函数。“TODAY()”函数是查询语句中可用的函数之一。
使用该函数,可以轻松的指定条件,比如“今天”、“上周”、“下周”,而无需指定每个日期。
(其他函数请参阅此处。)

使用“order by”指定条件

接下来,让我们在之前的条件上添加另一个条件。

  • “期限”字段的值在“今天”之前

  • “对应状况”字段的值不包含“完了”

  • “期限”字段的值按“升序”获取

     LimitDay < TODAY() and Status not in ("完了") order by LimitDay asc

这样就可以使用“order by”选项对记录的输出顺序进行排序。

表达式分组

为多个字段指定多个条件时,请对表达式进行分组。
可以通过括号“()”括起来对表达式进行分组。
通过分组,可以指定更详细的条件。

  • “来询种类”字段的值是“其他”
    或者

  • “期限”字段值的范围从“2018-02-01”到“2018-03-01

     (QType in ("其他")) or (LimitDay >= "2018-02-01" and LimitDay <= "2018-03-01")

查询语句中变量的赋值

最后介绍一下分配变量的方法。
在实际使用 JavaScript 编写查询语句时,有些情况下查询语句中可能包含变量。
例如,将从记录中获取到的值分配给查询语句。
为了使用这些动态值编写查询语句,需要将字符串与变量分开。

让我们假设以下情况:

  • 打开记录时,希望获取到具有相同“期限”值的其他记录。

要实现上述条件,必须按下列顺序进行处理

  1. 获取打开的记录的值

  2. 将获取到的值分配给查询语句

让我们实际看看代码。

(function() {
  'use strict';

  kintone.events.on('app.record.detail.show', function(event) {
    var record = event.record;
    var limitDay = record.LimitDay.value;
    var query = 'LimitDay = "' + limitDay + '"';

    var body = {
      'app': kintone.app.getId(),
      'query': query
    };

    kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
      // success
      console.log(resp);
    }, function(error) {
      // error
      console.log(error);
    });
    return event;
  });
})();

重点

以上代码的第7行是重点。

    var query = 'LimitDay = "' + limitDay + '"';

记录中“期限”字段的值被分配给作为获取记录的条件的查询语句。
因此,为了将 JavsScript 中的变量分配给查询语句,必须将其组合为字符串。

最后

一旦掌握了编写诀窍,就可以轻松编写查询语句。
这次介绍了查询语句的编写方法,其实还有一种更简单的方法可以组织查询语句。

可以通过组合查询语句来获取各种数据,在实际开发中经常用到。
希望您能利用查询语句来更方便地自定义kintone。