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.modelsDocument を拡張するクラスです。

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

admin ユーザーでログインしています。クエリの権限がないのはなぜですか? また、クエリを実行する権限を自分に付与するにはどうすればよいですか?

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 に答える