cshenfu
2024-06-27 58aa6e282bb343503be3cb198948328ea3ed7b79
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
module.exports = {
    /**
     * 连表查询地理位置就近搜索示例
     * @url template/db_api/pub/selects_geo 前端调用的url参数地址
     * data 请求参数 说明
     * res 返回参数说明
     * @params {Number} code 错误码,0表示成功
     * @params {String} msg 详细信息
     */
    main: async (event) => {
        let { data = {}, userInfo, util, originalParam } = event;
        let { uniID, pubFun, vk , db, _ } = util;
        let { uid } = data;
        let res = { code : 0, msg : 'ok' };
        // 业务逻辑开始-----------------------------------------------------------
        // 演示3表连接
        res = await vk.baseDao.selects({
            dbName:"vk-test",
            getCount:true,
            pageIndex:1,
            pageSize:10,
            // 主表where条件
            whereJson:{
                location: _.geoNear({
                    geometry: new db.Geo.Point(120.12792, 30.228932),    // 点的地理位置,为了方便测试,这里固定在杭州市西湖区
                    maxDistance: 4000,        // 选填,最大距离,米为单位
                    minDistance: 0            ,     // 选填,最小距离,米为单位
                    distanceMultiplier:1,     // 返回时在距离上乘以该数字 1代表米 100 代表厘米 0.001 代表千米
                    distanceField:"distance", // 输出的每个记录中 distance 即是与给定点的距离
                }),
                money:_.gt(0)
            },
            // 副表列表
            foreignDB:[
                {
                    dbName:"uni-id-users",
                    localKey:"user_id",
                    foreignKey:"_id",
                    as:"userInfo",
                    limit:1
                }
            ]
        });
        // 业务逻辑结束-----------------------------------------------------------
        return res;
    }
}