关于在Tornado web中获取asyncmongo查询结果的问题

发布于 2024-10-31 07:11:40 字数 764 浏览 2 评论 0原文

你好 我知道对于不熟悉异步方法的用户来说这是一个常见问题...... 我想使用 asyncmongo 使用用户 id 查询数据库来检查用户是否登录,但显然这不起作用,而且我不想在回调中使用 self.render 。

感谢您的帮助。

class MainPage(BaseHandler):

def get(self):

    if not self.current_user:
     ####  get no result here 
    .............

使用 asyncmongo 方法的 get_current_user 函数:

def get_current_user(self):
    user_id = self.get_secure_cookie("user")
    if not user_id: return None 
    self.db.users.find({'user_id': bson.ObjectId(str(user_id))}, limit=1, callback=self._on_response)

def _on_response(self, response, error):
    if error:
        raise tornado.web.HTTPError(500)
    how to return the value of response instead of self.render('template',response) ?

Hi
I know this is a common issue for user who is not familiar with async method....
i want to query db with user id using asyncmongo to check if the user log on, but obviously this doesn't work and i don't want to use self.render in call back.

Thanks for your help.

class MainPage(BaseHandler):

def get(self):

    if not self.current_user:
     ####  get no result here 
    .............

get_current_user function using asyncmongo method:

def get_current_user(self):
    user_id = self.get_secure_cookie("user")
    if not user_id: return None 
    self.db.users.find({'user_id': bson.ObjectId(str(user_id))}, limit=1, callback=self._on_response)

def _on_response(self, response, error):
    if error:
        raise tornado.web.HTTPError(500)
    how to return the value of response instead of self.render('template',response) ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

葬心 2024-11-07 07:11:40
def _on_response(self, response, error):
    if error:
        raise tornado.web.HTTPError(500)
    self.render(str(response))
def _on_response(self, response, error):
    if error:
        raise tornado.web.HTTPError(500)
    self.render(str(response))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文