Tôi đang sử dụng MongoDB với Flask-MongoEngine làm thành phần ORM của tôi cho ứng dụng web của tôi.Vấn đề tài liệu được nhúng với MongoEngine
Tôi đã có cấu trúc sơ đồ tài liệu tài như vậy:
from ..core import db
class UserComics(db.EmbeddedDocument):
favorites = db.SortedListField(db.StringField(), default=None)
class UserSettings(db.EmbeddedDocument):
display_favs = db.BooleanField(default=False)
default_cal = db.StringField(default=None)
show_publishers = db.ListField(db.StringField(), default=None)
class UserTokens(db.EmbeddedDocument):
refresh_token = db.StringField(default=None)
access_token = db.StringField(default=None)
expire_time = db.StringField(default=None)
class User(db.Document, UserMixin):
# Save User document to this collection
meta = {'collection': 'users_test'}
userid = db.StringField()
full_name = db.StringField()
first_name = db.StringField()
last_name = db.StringField()
gender = db.StringField()
birthday = db.StringField()
email = db.EmailField()
friends = db.ListField(db.StringField())
date_creation = db.DateTimeField()
last_login = db.DateTimeField()
favorites = db.EmbeddedDocumentField(UserComics)
settings = db.EmbeddedDocumentField(UserSettings)
tokens = db.EmbeddedDocumentField(UserTokens)
Tuy nhiên, Khi tạo một người dùng mới như thế này (tôi đã bỏ qua dòng ...):
def create_new_user(resp):
newUser = User()
....
newUser.settings.default_cal = resp['calendar']
....
newUser.save()
return
tôi chạy vào lỗi này:
Thuộc tínhLỗi: đối tượng 'NoneType' không có thuộc tính 'default_cal'
Dường như với tôi rằng tôi không sử dụng tài liệu được nhúng MongoEngines chính xác nhưng tôi không biết tôi đang đi đâu sai.
Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!
Hoặc tạo tài liệu được nhúng theo mặc định: 'db.EmbeddedDocumentField (UserSettings, default = UserSettings)'. – tbicr
@tbicr ah, thật tuyệt, cảm ơn, chỉnh sửa câu trả lời. –
Cảm ơn bạn! Đây chính xác là những gì tôi cần biết. Mọi thứ đang hoạt động như mong đợi ngay bây giờ! –