云开发数据库lookup如何连接node-sdk的数据库?
const tcb = require("[@cloudbase](/user/cloudbase)/node-sdk");
const app = tcb.init({
secretId: "xx",
secretKey: "xx2",
env: 'production-xxx2'
});
const db2 = app.database()// 这个和db1去分离开的, 怎么让他们一起lookup查询?
comicDb = db.collection('comic')
const cloud = require('wx-server-sdk'); // 这个怎么连接db2?
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
const db1 = cloud.database(); // 这个数据库里面没有comic数据。
const recordCouponDb = db.collection('recordCoupon')
const result = await recordCouponDb.aggregate().match(match)
.group(group).
project({
len: $.size("$openId"),
comicId: '$_id.comicId',
sourceUrl: '$_id.sourceUrl'
})
.limit(pageSize).lookup({
from: "comic", // 希望这里连接的是 comicDb
as: "bookList",
let: {
comicId: '$comicId',
sourceUrl: '$sourceUrl',
},
pipeline: $.pipeline()
.match(_.expr($.and([
$.eq(['$comicId', '$$comicId']),
$.eq(['$sourceUrl', '$$sourceUrl']),
]))).done()
}).end()
我能想到的办法就是查询两次了。
const result = await recordCouponDb.aggregate().match(match)
.group(group).
project({
len: $.size("$openId"),
comicId: '$_id.comicId',
sourceUrl: '$_id.sourceUrl'
}).sort({
len: -1
}).skip((pageIndex - 1) * pageSize)
.limit(pageSize).end()
// tcbComic再次查询数据。
const comicList = (await tcbComic.where({
comicId: _.in(result.list.map(i => i.comicId)),
sourceUrl: _.in(result.list.map(i => i.sourceUrl)),
}).get()).data