Я пишу API с Flask. Я использую ReferenceField для пользователя, который написал сообщение. API должен возвращать объект JSON с данными о публикации и данными о пользователе.
Конечная точка колбы:
@app.route("/api/posts")
def posts_index():
posts = Post.objects()
return jsonify({
"posts": json.loads(posts.to_json())
})
Модель базы данных:
class User(Document):
email = EmailField(required=True, unique=True)
username = StringField(max_length=50, required=True, unique=True)
password = StringField(required=True)
created = DateTimeField(required=True, default=datetime.datetime.now())
class Comment(EmbeddedDocument):
content = StringField(max_length=5000)
user = ReferenceField(User)
created = DateTimeField(required=True, default=datetime.datetime.now())
class Post(Document):
title = StringField(max_length=120, required=True)
user = ReferenceField(User, reverse_delete_rule=CASCADE)
content = StringField(max_length=5000)
comments = ListField(EmbeddedDocumentField(Comment))
created = DateTimeField(required=True, default=datetime.datetime.now())
JSON-ответ:
{
"posts": [
{
"_id": {
"$oid": "5a5efd1f9ef3161fc64cb95a"
},
"comments": [],
"content": "Lorem Ipsum",
"created": {
"$date": 1516178223018
},
"title": "Hello",
"user": {
"$oid": "5a5d0b9b9ef316220b6d9881"
}
},
{
"_id": {
"$oid": "5a5efd1f9ef3161fc64cb95b"
},
"comments": [],
"content": "Lorem Ipsum Dolor",
"created": {
"$date": 1516178223018
},
"title": "Hello Again",
"user": {
"$oid": "5a5d0b9b9ef316220b6d9881"
}
}
]
}
Я хотел бы получить ответ json, но ReferenceField должен содержать информацию о пользователе.
User
как встроенный документ, либо взять пользовательскую ссылку на каждыйPost object
из запросаcursor
изPost
и обновить окончательный ответ, используя цикл. - person Sreenadh T C   schedule 19.01.2018