python - Python Mongoengine 必需 = True 验证规则不起作用
问题描述
class Song(db.Document):
# defineing varables
Id = db.IntField(min_value = 0, unique=True, Required=True)
songName = db.StringField(unique=True,max_length = 100, Required = True)
def json(self):
song_dict = {
"Id": self.Id,
"songName": self.songName
}
return json.dumps(song_dict)
meta = {
"indexes": ["Id"],
"ordering" :["-date_created"]
}
## Define route to create database and added the data to the database.
@app.route('/audiometa', methods=['POST'])
def create_audiometa():
#Datetime=datetime.now()
try:
_json = request.json
if _json['audioFileType'] in audiotypeList:
audioFileType =_json['audioFileType']
try:
record=eval(audioFileType)(**_json['audioFileMetadata'])
record.save()
return Response(response = json.dumps({"message": "Record Added Succesfully"}),status=200)
except Exception as e:
return Response(response = json.dumps({"Error" : "Error \n %s" % (e)}),status=400)
else:
return Response(response = json.dumps({"message": ""}),status=400)
except Exception as e:
return Response(response = json.dumps({"Error" : "Error \n %s" % (e)}),status=400)
我正在定义将 JSON 文件作为数据发布到数据库的路由。将 mongoengine 库与 python 一起用于数据库请求。
我已经根据需要定义了所有字段,但是当我从邮递员发布 JSON 时,它成功上传到数据库,尽管缺少几个字段。喜欢,
像,正确的要求就是这个......
{"audioFileType": "Song", "audioFileMetadata": {"Id":"12123232003",
"songName":"I wanna grow old with you."
}
}
但它也接受缺少歌曲名的地方......
{"audioFileType": "Song", "audioFileMetadata": {"Id":"12123232003"
}
}
有什么我错过的请告诉我...这是我在 StackOverflow 上的第一篇文章,所以如果我犯了任何错误,请告诉我...
谢谢。
解决方案
我相信这是您的字段定义中的一个简单错字,它是required=True
(小写)而不是Required=True
.
id=ObjectIdField(primary_key=True)
补充说明一下,如果您没有将属性设置为“id”作为名称,MongoEngine 会添加一个字段,因此在您的情况下,您实际上同时拥有id
和Id
在您的实例上。
推荐阅读
- javascript - 如何使用 AJAX 从 HTML 页面的输入中将参数传递到 c++ 文件中?
- aws-elasticsearch - AWS ElasticSearch 收缩 API 节点名称
- java - S3 / MinIO with Java / Scala:将字节缓冲区文件块保存到对象存储
- php - 数组检查键是否不存在添加默认值
- react-native - 存储 userId:状态 vs 上下文 vs 异步存储
- typescript - 需要帮助重构打字稿功能
- python - 有没有办法改变打印速度以匹配当前播放的音频文件的速度?
- python - 将opencv c++代码转换为opencv python代码
- c++ - 适用于大量处理器的 MPI 发送和接收模式
- c++ - C++ 流不应创建新行