Я прочитал учебники и потому что я использую три отдельные вещи: 1. Flask как сервер 2. PyMongo как драйвер MongoDB 3. PyMODM как создатель схемы
Я уже запутался.
Во-первых, я определил схему с помощью PyMODM:
from pymongo import TEXT
from pymongo.operations import IndexModel
from pymodm import connect, fields, MongoModel, EmbeddedMongoModel
class GoalPosition(EmbeddedMongoModel):
x = fields.IntegerField()
y = fields.IntegerField()
class GoalOrientation(EmbeddedMongoModel):
x = fields.IntegerField()
class Goal(EmbeddedMongoModel):
position = fields.EmbeddedDocumentField(GoalPosition)
orientation = fields.EmbeddedDocumentField(GoalOrientation)
class Path(MongoModel):
path = fields.EmbeddedDocumentListField(Goal)
Исходя из вышеизложенного, моя идея заключается в создании двух типов схем: Цель и Путь.В конце Goal будет выглядеть так:
{
"position": {
"x": "1",
"y": "6"
},
"orientation": {
"x": "0"
}
}
И Path будет список целей.Имея мою схему, большой вопрос, как я могу использовать это для связи с моей базой данных MongoDB?Вот мой маленький серверный код:
from flask import Flask, render_template, flash, redirect, url_for, session, request, logging
from flask_pymongo import PyMongo
from flask import jsonify
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb+srv://user:pass@cluster0-qhfvu.mongodb.net/test?retryWrites=true"
mongo = PyMongo(app)
@app.route('/goal', methods=['GET', 'POST'])
def goals():
if request.method == 'GET':
goals = mongo.db.goals.find()
return jsonify(goals)
elif request.method == 'POST':
position = request.body.position
orientation = request.body.orientation
print position
flash("Goal added")
@app.route('/goal/<id>')
def goal(id):
goal = mongo.db.goals.find_one_or_404({"_id" : id})
return jsonify(goal)
Итак, сосредоточившись только на методе GET на маршруте '/ goal', как я могу получить все сообщения цели из моей базы данных?
Кроме того, я хочу знать как я могу получить последнее сообщение о цели в '/ goal /'?