未来城市
未来城市
  • 发布:2021-09-16 19:06
  • 更新:2024-05-11 23:49
  • 阅读:1751

如何显示用opendb-city-china数据表生成的省市区?

分类:uniCloud

在schema中这样设置(完全按照视频教程处理):

        "city": {  
            "bsonType": "string",  
            "title": "所在城市",  
            "description": "所在城市的编码",  
            "foreignKey": "opendb-city-china.code",  
            "enumType": "tree",  
            "enum": {  
                "collection": "opendb-city-china",  
                "orderby": "value asc",  
                "field": "code as value, name as text"  
            }  
        },

然后用schema2code生成页面,在新建页面用picker选好之后,在detail页面是这样的:

        <view>  
          <text>所在城市</text>  
          <text>{{data.city && data.city[0] && data.city[0].name}}</text>  
        </view>

实际的显示效果就是只能显示“区”的名字,无法显示前面的“省、市”。
现在诉求是,希望显示“所在城市:省-市-区”,请问代码应该如何修改啊?

2021-09-16 19:06 负责人:DCloud_uniCloud_JSON 分享
已邀请:

最佳回复

DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

数据表中存储的是区的code,如果要显示完整“省市区”需要用 查询树形数据gettree来实现。
schema生成的详情/编辑页面中,已经演示了具体写法

你的需求是:希望在列表页面也直接显示完整的省市区吧?
gettree比较耗性能,详情和编辑页面只有一个这样的查询所以使用。
而列表页,一次查询多个条数据执行多次gettree是个不推荐的做法。

类似这样的场景,都应当使用冗余字段解决。直接在编辑页面把完整的“省市区”直接存储到数据表中,这样列表页面是直接显示你存储的字段,而不需要树形数据查询的方式。

  • l***@qq.com

    "field": "code as value,name as text"

    怎么写 将完整的 省市区 写入数据库中呢

    "field": "name as value" ??????

    2022-04-18 21:46

2***@qq.com

2***@qq.com

看评论得到启发,用查询树形数据gettree来实现,我想得到具体code对应的省市区

getAddress(code) {  
    console.log(code)  
    //拼装查询条件  
    let query = '\"code==' + '\'' + code + '\'' + '\"'  
    console.log(query)  
    db.collection("opendb-city-china")  
        .get({  
            getTreePath: {  
                "startWith": query  //查询具体code所对应的省市区  
            }  
        })  
        .then((res) => {  
            const resdata = res.result.data  
            // console.log(resdata);  
            // console.log(resdata[0].name);  
            // console.log(resdata[0].children[0].name);  
            // console.log(resdata[0].children[0].children[0].name);  
            //自己在data中定义address,用来存放最终结果  
            this.address = resdata[0].name + resdata[0].children[0].name + resdata[0].children[0].children[0].name  
        })  
        .catch((err) => {  
            uni.showModal({  
                content: err.message || '请求服务失败',  
                showCancel: false  
            })  
        })  

},
楚雄

楚雄

现在得到完整的省市区路径了吗?最后怎么处理的?

要回复问题请先登录注册