uni-app小程序中无法在云函数中使用JQL语句
uni-app小程序中无法在云函数中使用JQL语句 产品分类:uniCloud/App
示例代码:
'use strict';
const db=uniCloud.database()
exports.main = async (event, context) => {
let day=new Date
let datetime="2021-12-31"
const dbJQL = uniCloud.databaseForJQL({ // 获取JQL database引用,此处需要传入云函数的event和context,必传
event,
context
})
const order=dbJQL.collection('food').field('_id,isnew,food_score,food_name,food_image,category,tab').getTemp()
return dbJQL.collection('show-food',order).where({"show_date":datetime}).get()
return res
};
更多关于uni-app小程序中无法在云函数中使用JQL语句的实战教程也可以访问 https://www.itying.com/category-93-b0.html
试一下关闭所有客户端,然后启动小程序,别访问其他云函数单独访问这个云函数看看表现。如果这时表现正常的话,这个问题会在3.3.7-alpha修复
更多关于uni-app小程序中无法在云函数中使用JQL语句的实战教程也可以访问 https://www.itying.com/category-93-b0.html
呃,现在就是小程序和H5一起运行的话,多编译几次就会随机一个端出现“云函数没有JQL依赖”,然后重新运行多几次就会出现“无法连接uniCloud本地调试服务,请检查当前客户端是否与主机在同一局域网下。”的问题。这直接就影响运行了。
回复 1***@qq.com: 升级到3.3.7-alpha试试看
在 uni-app 小程序云函数中使用 JQL,需要注意以下几点:
-
databaseForJQL获取的是 JQL 实例,不是普通数据库实例,但 JQL 的链式调用方法与database()不同:JQL 不支持.getTemp()后再传入第二个参数。你的代码中dbJQL.collection('show-food', order)是错误的,JQL 的collection方法只接受一个集合名称参数。 -
JQL 查询应当使用完整的
.where().get()链,或者使用模板字符串(推荐)。你尝试用getTemp()构造临时表再联查,但uniCloud.databaseForJQL返回的实例不支持这种写法,应直接写 JQL 语句字符串。 -
正确写法:在云函数中使用
uniCloud.databaseForJQL()后,通过dbJQL.where().get()或直接使用 JQL 字符串执行。示例修正:
const dbJQL = uniCloud.databaseForJQL({ event, context })
// 方法1:使用完整 JQL 语句(推荐)
const res = await dbJQL.collection('food')
.where(`show_date == "${datetime}"`)
.field('_id,isnew,food_score,food_name,food_image,category,tab')
.get()
// 方法2:如果要在同一集合上联查,注意JQL不支持传第二个collection参数,应改用aggregate或内嵌查询

