问题简要:
三张表级联关系,订单(act-order)包含了商品信息(act-mall-goods),商品包含多个仓库信息(act-store),目的是通过订单找到商品的仓库信息。
由于找不到三张表级联查询的方法,我想使用云对象的方式分别查出三张表的信息返回,但不知道in操作符怎样在对象化条件中使用。
// 怎样使用in操作查询门店信息?
let stores = tStore.where('_id in ' + JSON.stringify(good.store_id))
具体代码:
// 开发文档: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
//获取数据库对象
const db = uniCloud.database();
//获取数据表opendb-verify-codes对象
const tOrder = db.collection('act-order')
const tGood = db.collection('act-mall-goods')
const tStore = db.collection('act-store')
module.exports = {
async getOrderDetail(orderId) {
let query = await tOrder.where({
_id: orderId
}).get()
const order = query.data[0]
if (order) {
console.log('order', order);
let good = tGood.where({
_id: order.good_id
})
// 怎样使用in操作查询门店信息?
let stores = tStore.where('_id in ' + JSON.stringify(good.store_id))
return {
good: good,
stores: stores
}
} else {
return null
}
}
}
4***@qq.com (作者)
关键想知道where(xx),里面的xx怎样写?
2022-06-20 13:42
DCloud_uniCloud_WYQ
回复 4***@qq.com:
"${_id}" in ${JSON.stringify(good.store_id)}
2022-06-20 14:29
DCloud_uniCloud_WYQ
论坛的回复里面两边的模板`字符串标记无法显示注意自己补上
2022-06-20 14:29
4***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 提示Error: 查询参数必须为对象,在云函数中where条件不能为字符串吗?
2022-06-20 14:45
DCloud_uniCloud_WYQ
回复 4***@qq.com: 刚发现你用的不是jql扩展,原始写法是不支持这样写的。https://uniapp.dcloud.net.cn/uniCloud/jql-cloud.html
2022-06-20 14:48
4***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 可以了,感谢!但还有个疑问,像这种场景要关联查表数据,实际上有2种方案:一是在前端使用uniCloud.database()查询;二是在云对象中使用uniCloud.databaseForJQL来查。那么推荐的方式是哪种?在前端查有无安全风险?
2022-06-20 16:15