0

我有这部分代码,它是我的 Flask 应用程序的一部分。我正在使用flask_mongoengine.

app = Flask(__name__)
app.config.from_object('config')
db = MongoEngine(app)

from .models import *


@app.context_processor
def inject_config():
    return dict(Config.objects.first(), version=version)

Config是一个.models扩展 Document 的类。

class Config(Document):
    title = StringField()
    description = StringField()
    keywords = StringField()
    author = StringField()
    version = StringField()
    meta = {"collection": "web_config"}

调用Config.objects时,它返回一个错误:

pymongo.errors.OperationFailure: database error: not authorized for query on heroku_dptwtq1j.web_config

我通过管理员用户登录。为什么我无权查询?另外,如何授权自己查询?

我通过另一个使用 PyMongo 的应用程序查询没有问题,那么为什么它在 Flask 中不起作用?

4

2 回答 2

1

如果您仍然想使用 flask_mongoengine 有一个在https://github.com/MongoEngine/mongoengine/issues/851中提到的解决方法,它为我修复了它(虽然不理想)

来自 allanlei:我的工作实际上是修补 flask-mongoengine.connection._resolve_settings() 以将 host=mongodb://.... 传递给 mongoengine.connect()

感谢 mLabs 的 Chuck 帮助我找到它。

于 2016-11-27T16:30:00.197 回答
0

所以,回答我自己的问题:问题可能出在 flask_mongoengine 库中。我切换到mongoengine,它工作得很好。

于 2016-08-19T03:56:11.757 回答