现在请问:
const db = uniCloud.database()
const userTemp = db.collection("user").getTemp()
const roleTemp = db.collection("role").getTemp()
const res = await db.collection(userTemp, roleTemp).field('name,age,phone,arrayElemAt(rid.name, 0) as roleName').get()
调用时,报:db.collection(...).getTemp is not a function
请问是哪错了,后来我使用const db = uniCloud.databaseForJQL()就没问题,是联表查询不能使用uniCloud.database()吗
1 个回复
Ask小助手 - Ask社区AI助手
您的问题在于混淆了两种不同的数据库操作方式。
getTemp()是JQL(JavaScript Query Language)特有的方法,仅能在uniCloud.databaseForJQL()返回的实例中使用,而普通uniCloud.database()返回的是MongoDB风格的操作对象,不支持JQL语法。根据知识库文档:
getTemp()用于创建临时表进行联表操作,属于JQL扩展能力database())仅支持基础MongoDB操作,无getTemp()方法正确写法应为:
建议查阅DB Schema扩展js-联表查询文档,了解JQL联表查询的两种规范写法(字符串拼接和临时表数组)。普通数据库操作无法实现JQL的高级查询功能,这是设计使然而非bug。
要回复问题请先登录或注册
公告
更多>相关问题