我在NodeJS环境中使用express。
运行解析服务器通常,Parse会自动确定哪些数据已更改,因此只会将“脏”字段发送到Parse Cloud。所以,我不需要担心压缩我不打算更新的数据。
但是为什么以下代码每次都会保存新数据,而不是使用名称" Some Name"来更新现有文档数据。
// Parse code
Parse.initialize(keys.parseAppID);
Parse.serverURL = keys.parseServerURL;
var GameScore = Parse.Object.extend("GameScore");
var gameScore = new GameScore();
let data = {
playerName: "Some Name",
score: 2918,
cheatMode: true
};
gameScore.save(data, {
success: (gameScore) => {
// let q = new Parse.Query("GameScore");
// q.get(gameScore.id)
console.log("ID: " + gameScore.id)
},
error: function (gameScore, error) {
// Execute any logic that should take place if the save fails.
// error is a Parse.Error with an error code and message.
alert('Failed to create new object, with error code: ' + error.message);
}
});
// End of Parse code
答案 0 :(得分:1)
问题是您正在执行查询以查找要更新的对象,但是当您去保存data
时,您没有使用结果。
query.first({ // This will result in just one object returned
success: (result) => {
// Check to make sure a result exists
if (result) {
result.save(data, {
// Rest of code
注意:您将playerName
视为唯一键。如果多个用户可以拥有相同的playerName
属性,则会出现错误。您可以使用id
代替保证唯一的id
。如果您使用var GameScore = Parse.Object.extend("GameScore");
var gameScore = new GameScore();
gameScore.id = "ID"; // This id should be the id of the object you want to update
,则可以使用Parse.Query.get
编辑: 由于您要更新现有对象,因此必须指定其ID。
$(document).on('input', '.inps', function(event) {
$(this).attr('type', 'tell');
function showpanel() {
$('.inps').attr('type', 'password');
$(this).attr('type', 'tell');
}
// use setTimeout() to execute
setTimeout(showpanel, 1000);
// check for hyphen
var myLength = $(this).val().trim().length;
if (myLength == 1) {
$(this).next('.inps').focus();
$(this).next('.inps').val('');
}
});