Верните MongoDB ReferenceField как JSON для Ajax Call - PullRequest
0 голосов
/ 24 апреля 2020

Я пишу API с Flask и mongoengine. Я использую ReferenceField для базового блока, который ссылается на базовый блок. API должен вернуть объект JSON с данными о модуле и данными о базовом блоке в конечную точку ajax.

Flask:

@masters.route('/get-all-units/', methods=['GET', 'POST'])
@login_required
def getallunits():
    units = Units.objects()
    return jsonify(data=units)

MongoEngine Schema:

class Units(db.Document):
    meta = {"collection":"units"}
    code = StringField()
    name = StringField()
    complexflag = BooleanField(default=False)
    factor = FloatField()
    baseunit = ReferenceField("self", dbref=True)
    created_at = DateTimeField(default=datetime.now(timezone('Asia/Kolkata')))

JSON ответ:

{
  "data": [
    {
      "_id": {
        "$oid": "5ea20857a4649f9774f580a8"
      }, 
      "code": "cm", 
      "complexflag": false, 
      "created_at": {
        "$date": 1587677266039
      }, 
      "name": "CM"
    }, 
    {
      "_id": {
        "$oid": "5ea20865a4649f9774f580a9"
      }, 
      "baseunit": {
        "$id": {
          "$oid": "5ea20857a4649f9774f580a8"
        }, 
        "$ref": "units"
      }, 
      "code": "in", 
      "complexflag": true, 
      "created_at": {
        "$date": 1587677266039
      }, 
      "factor": 2.54, 
      "name": "Inch"
    }
  ]
}

Я хотел бы получить json ответ, но ReferenceField должен содержать информацию о базовом блоке. Я попытался использовать решение, указанное в MongoDB ReferenceField для JSON, но у меня не сработало.

...