=, in, notIn, !=, isNull, isNotNull, exists, notExists
info file、geojson、object、date 类型的 array 不支持查询操作。如果进行查询,会返回空数组
操作步骤
1.通过 数据表 ID 或 数据表名 实例化一个 TableObject 对象,操作该对象即相当于操作对应的数据表,
let MyTableObject = new BaaS.TableObject(tableID | tableName)
参数说明
tableID 和 tableName 二选一,不能同时存在
参数名
类型
说明
tableID
integer
数据表的 ID
tableName
string
数据表名
2.实例化一个 Query 对象,在该对象上添加查询条件
let query = new BaaS.Query()
查看下面的文档,了解目前支持的查询条件
3.支持查询条件并执行查找操作
MyTableObject.setQuery(query).find()
示例
请求示例
asynnc function query() {
try {
// 实例化查询对象
let query = new BaaS.Query()
// 设置查询条件(比较、字符串包含、组合等)
//...
// 应用查询对象
let Product = new BaaS.TableObject(tableName)
let res = await Product.setQuery(query).find()
// success
return res
// 不设置查询条件
let res = Product.find()
// success
return res
} catch(err) {
// error
throw err
}
}
function query() {
let query = new BaaS.Query()
// 设置查询条件(比较、字符串包含、组合等)
//...
// 应用查询对象
let Product = new BaaS.TableObject(tableName)
Product.setQuery(query).find().then(res => {
// success
callback(null, res)
}).catch(err => {
// error
callback(err)
})
// 不设置查询条件
Product.find().then(res => {
// success
callback(null, res)
}).catch(err => {
// error
callback(err)
})
}
info 目前 pointer 仅支持针对 pointer 本身的查询,不支持嵌套查询(即查询 pointer 指向的数据行的字段)
示例代码
假设现在有两张表: order 表和 customer 表。
order 表部分字段结构如下:
字段名
字段类型
说明
customer
pointer
指向了 customer 表
user
pointer
指向了 _userprofile 表
现在需要查询 order 表中,同时满足以下条件的数据行:
customer 字段指向 customer 表中 id 为 5bad87ab0769797b4fb27a1b 的数据行
user 字段指向了 _userprofile 表中 id 为 69147880 的数据行
exports.main = async function queryPointer() {
try {
var query = new wx.BaaS.Query()
var Customer = new BaaS.TableObject('customer')
var Order = new BaaS.TableObject('order')
var User = new BaaS.User()
query.compare('customer', '=', Customer.getWithoutData('5bad87ab0769797b4fb27a1b'))
query.compare('user', '=', User.getWithoutData(69147880))
let res = await Order.setQuery(query).expand(['customer', 'user']).find()
// success
return res
} catch(err) {
// error
throw err
}
}
function queryPointer() {
var query = new wx.BaaS.Query()
var Customer = new BaaS.TableObject('customer')
var Order = new BaaS.TableObject('order')
var User = new BaaS.User()
query.compare('customer', '=', Customer.getWithoutData('5bad87ab0769797b4fb27a1b'))
query.compare('user', '=', User.getWithoutData(69147880))
Order.setQuery(query).expand(['customer', 'user']).find().then(res => {
// success
callback(null, res)
}).catch(err => {
// error
callback(err)
})
}
let query1 = new BaaS.Query()
query1.isNull('name')
let query2 = new BaaS.Query()
query2.compare('price', '>', 10)
...
// and 查询
let andQuery = BaaS.Query.and(query1, query2, ...)
// or 查询
let orQuery = BaaS.Query.or(query1, query2, ...)
复杂组合查询
let query1 = new BaaS.Query()
query1.isNull('name')
let query2 = new BaaS.Query()
query2.compare('price', '>', 10)
...
// and 查询
let andQuery = BaaS.Query.and(query1, query2)
// or 查询中包含 and 查询
let query3 = new BaaS.Query()
query3.compare('amount', '>', 3)
let orQuery = BaaS.Query.or(andQuery, query3)
获取符合筛选条件的数据总数
BaaS.TableObject#count()
exports.main = async function queryTotal() {
try {
let Product = new BaaS.TableObject(tableName)
let query = new BaaS.Query()
// 设置查询条件
// ...
let num = await Product.setQuery(query).count()
// success
console.log(num) // 10
return res
} catch(err) {
// error
throw err
}
}
function queryTotal() {
let Product = new BaaS.TableObject(tableName)
let query = new BaaS.Query()
// 设置查询条件
// ...
Product.setQuery(query).count().then(num => {
// success
console.log(num) // 10
callback(null, res)
}, err => {
// err
callback(err)
})
}