云开发数据库lookup如何连接node-sdk的数据库?
发布于 5 年前 作者 hujun 9718 次浏览 来自 官方Issues
 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
1 回复

两个不同的库进行lookup?跨库啊?不支持

回到顶部