我想为对象的生命周期实现历史记录功能。基本上我有一个对象查询,它与历史有一对多的关系。含义查询对象具有指向历史行数组的指针。当a在保存之前创建此对象时,我执行此操作
Parse.Cloud.beforeSave("Enquiry", function(request, response)
var currentUser = request.user;
var currentObject = request.object;
if (!currentObject.id) {
var historicalData = new Array();
var history = new Parse.Object("History");
var userName = currentUser.get("firstname") + " " + currentUser.get("lastname");
history.set("user", userName);
history.set("summary", "Enquiry created ");
history.save();
historicalData.push(history);
currentObject.set("history", historicalData);
} else {
//code to fetch existing Enquiry and figure out what changed
...
...
var historicalData = existingEnquiry.get("history");
var history = new Parse.Object("History");
history.set("user", userName);
history.set("summary", summary);
history.save();
historicalData.push(history);
currentObject.set("history", historicalData);
}
}
现在我可以看到历史对象被创建并分配给新创建的对象。此外,当我更新对象时,我可以看到另一个历史对象被持久存储在数据库中,但问题是查询到历史记录引用没有改变,这意味着查询对象仍指向在查询时创建的历史记录对象创建。
我不明白的是即使我已将更新的数组添加到查询的历史记录列中,为什么该列不会更新。任何有关这方面的帮助将不胜感激。
答案 0 :(得分:0)
您必须在“currentObject.set(”history“,historicalData)”语句之后保存当前对象。
即 currentObject.save();