フラスコモンゴアルケミーを使用して、以下のスキーマのポストリクエストを実行しようとしています
class Sensors(db.Document):
sensorName = db.StringField()
sensorStatus = db.StringField()
class Camera(db.Document):
cameraName = db.StringField()
cameraStatus = db.StringField()
class Checkpoints(db.Document):
checkPointName = db.StringField()
class Gateway(db.Document):
sensors = db.ListField(db.DocumentField(Sensors), db_field='sensors')
camera = db.ListField(db.DocumentField(Camera), db_field='camera')
checkpoints = db.ListField(db.DocumentField(Checkpoints), db_field='checkpoints')
スキーマの Gateway クラスには、他の 3 つのクラスのリストが含まれています。
以下のようにしてみました
@gateway_bp.route('/gateway',methods=['POST'])
def object_book():
request_data = request.get_json()
sensorsList=[]
cameraList=[]
checkList=[]
for sensorObj in request_data['GateWay1']['sensors']:
sensorsList.append(Sensors(sensorName=sensorObj['sensorName'],sensorStatus=sensorObj['sensorStatus']))
gatewayObj=Gateway(sensors=sensorsList)
for cameraObj in request_data['GateWay1']['camera']:
cameraList.append(Camera(cameraName=cameraObj['cameraName'],cameraStatus=cameraObj['cameraStatus']))
gatewayObj=Gateway(camera=cameraList)
for checkListObj in request_data['GateWay1']['checkpoints']:
checkList.append(Checkpoints(checkPointName=checkListObj['checkPointName']))
gatewayObj=Gateway(checkpoints=checkList)
gatewayObj.save()
return 'Saved :)'
エラーを取得する
mongoalchemy.exceptions.MissingValueException
MissingValueException: sensors
サンプルペイロード
{
"GateWay1": {
"sensors": [{
"sensorName": "s1",
"sensorStatus": "green "
}, {
"sensorName": "s2",
"sensorStatus": "red "
}],
"camera": [{
"cameraName": "cam1",
"cameraStatus": "live"
}, {
"cameraName": "cam2",
"cameraStatus": "live"
}],
"checkpoints": [{
"checkPointName": "chk1"
}, {
"checkPointName": "chk2"
}]
}
}
mongoAlchemy を使用して上記の json を mongodb に保存するのを手伝ってください。flask-mongoAlchemy について詳しく知ることができるサンプル リポジトリを指定してください。