我在第一次运行此代码时遇到错误,它可以100%正确地运行,但是此后每第二次运行就很奇怪。由于某种原因,值“ warnings”变成null
而不是[{"warning": "Text1", "time": datetime.datetime(2018, 8, 10, 20, 2, 22, 103589)}, {"warning": "Text2", "time": datetime.datetime(2018, 8, 10, 20, 2, 50, 815495)}]
我正在使用pymongo和MongoDB地图集。
这是我的代码:
result = db.memberscol.find_one({"guild": ctx.guild.id, "user": user.id})
if result is None or result["warnings"] is None or len(result["warnings"]) == 0:
warnings = [{"warning": warning, "time": datetime.datetime.utcnow()}]
else:
warnings = result["warnings"].append({"warning": warning, "time": datetime.datetime.utcnow()})
db.memberscol.replace_one({"guild": ctx.guild.id, "user": user.id}, {"guild": ctx.guild.id, "user": user.id, "warnings": warnings},
True)
如果有人可以帮助我,我将非常感激。谢谢。
答案 0 :(得分:0)
您不需要赋值运算符,因为append返回None。这就是为什么当您向其分配附加结果时warnings
在else语句中变为空的原因。
您可以这样做:
result = db.memberscol.find_one({"guild": ctx.guild.id, "user": user.id})
if result is None or result["warnings"] is None or len(result["warnings"]) == 0:
warnings = [{"warning": warning, "time": datetime.datetime.utcnow()}]
else:
warnings = [{"warning": warning, "time": datetime.datetime.utcnow()}]
result["warnings"].append({"warning": warning, "time": datetime.datetime.utcnow()})
db.memberscol.replace_one({"guild": ctx.guild.id, "user": user.id}, {"guild": ctx.guild.id, "user": user.id, "warnings": warnings},
True)
或附加到您的warnings
。
尽管如此,同样的事情也可以在JavaScript中使用。