drogon
drogon copied to clipboard
[问题] 如何等待通过relationships获取其他表的数据完成后再渲染view?
假设有两个model,一个是product,一个是category。当通过product获取category.name的时候,我们如果使用product.getCategory()的话,这个数据获取的过程是回调的方式,但是他会继续渲染view,如果我想把category.name内容加入viewData的话是无效的(回掉的时候view已经渲染完成发回响应了)。这种情况如何等待所有的category获取完毕或者让其他请求处理后再渲染view?
把你渲染view的部分放到最终的回调里
@an-tao 感谢指点,具体怎么操作呢,能提供一下样例代码么?我是要将一个product的数组逐个调用.getCategory(),这种怎么实现呢?
那你在callback里要做计数,搞个容器的智能指针存category的查询结果,如果是fastDbClient,都在一个线程里可以不用mutex,然后容器的大小和product数组相等的时候去渲染view;这样要读很多次db,还不如自己写个sql join一下;另外协程可以简化异步编程,也可以尝试一下。