使用 find() 电机时出现 BadYieldError [MongoDB + Tornado]

BadYieldError when using find() Motor [MongoDB + Tornado]

我是 python tornado 框架的新手。我在 MongoDB 中收集了一小部分数据。我在 python 文件中使用了一个简单的 get 函数。使用 db.collection.find() 选项时,我得到 BadYieldError。但是 db.collection.find_one() 工作正常,但它只显示一条记录。

import tornado
import bson
from bson import json_util
from bson.json_util import dumps
class TypeList(APIHandler):
@gen.coroutine
def get(self):
    doc = yield db.vtype.find()
    self.write(json_util.dumps(doc))

错误是:

tornado.gen.BadYieldError: yielded unknown object MotorCursor()

findreturns一个MotorCursor。 yield 光标的 fetch_next 属性 使光标​​前进并调用 next_object() 检索当前文档:

@gen.coroutine
def do_find():
    cursor = db.test_collection.find({'i': {'$lt': 5}})
    while (yield cursor.fetch_next):
        document = cursor.next_object()
        print document

请参阅教程部分 Querying for More Than One Document 以获取有关使用电机 findMotorCursor 的说明。