解析新用户保存不return新ID
Parse new User save does not return new ID
在Parse中保存新用户时,虽然用户保存正确,但保存后并没有返回新用户,所以代码在console.log("userResult id " + userResult.id);
处出错。如果用户已经存在,保存函数 returns id 正确。这是 Parse 的错误还是我遗漏了什么?
return userQuery
.first(function (userResult) {
if (!helpers.isDefined(userResult)) {
userResult = new Parse.User();
userResult.set("username", helpers.phoneToUsername(phoneNumber));
userResult.set("password", helpers.generatePassword(phoneNumber));
userResult.set("displayName", displayName);
}
userResult.set("location", location);
userResult.set("smsVerified", false);
return userResult.save()
})
.then(function (userResult) {
console.log("userResult id " + userResult.id); <-- ERROR HERE
user = userResult;
return Verification.createSmsVerification(userResult);
})...
错误:
Result: TypeError: Cannot read property 'id' of undefined
var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("username", helpers.phoneToUsername(phoneNumber));
好像用户在 then()
回调之后被保存了,但不应该是这样。
尝试return它:
return userQuery
.first(function (userResult) {
if (!helpers.isDefined(userResult)) {
userResult = new Parse.User();
userResult.set("username", helpers.phoneToUsername(phoneNumber));
userResult.set("password", helpers.generatePassword(phoneNumber));
userResult.set("displayName", displayName);
}
userResult.set("location", location);
userResult.set("smsVerified", false);
return userResult.save()
})
.then(function (userResult) {
console.log("userResult id " + userResult.id); <-- ERROR HERE
user = userResult;
return Verification.createSmsVerification(userResult);
})...
在黑暗中摸索了一段时间后,我发现问题是初始代码在 first()
回调中,而不是在 thenable 中。将最上面的代码行从 first(function()...
更改为 first().then(function()
已解决问题。
return userQuery.first()
.then(function (userResult) {
if (!helpers.isDefined(userResult)) {
userResult = new Parse.User();
userResult.set("username", helpers.phoneToUsername(phoneNumber));
userResult.set("password", helpers.generatePassword(phoneNumber));
userResult.set("displayName", displayName);
}
userResult.set("location", location);
userResult.set("smsVerified", false);
return userResult.save()
})
.then(function (userResult) {
console.log("userResult id " + userResult.id); <-- ERROR HERE
user = userResult;
return Verification.createSmsVerification(userResult);
})...
在Parse中保存新用户时,虽然用户保存正确,但保存后并没有返回新用户,所以代码在console.log("userResult id " + userResult.id);
处出错。如果用户已经存在,保存函数 returns id 正确。这是 Parse 的错误还是我遗漏了什么?
return userQuery
.first(function (userResult) {
if (!helpers.isDefined(userResult)) {
userResult = new Parse.User();
userResult.set("username", helpers.phoneToUsername(phoneNumber));
userResult.set("password", helpers.generatePassword(phoneNumber));
userResult.set("displayName", displayName);
}
userResult.set("location", location);
userResult.set("smsVerified", false);
return userResult.save()
})
.then(function (userResult) {
console.log("userResult id " + userResult.id); <-- ERROR HERE
user = userResult;
return Verification.createSmsVerification(userResult);
})...
错误:
Result: TypeError: Cannot read property 'id' of undefined
var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("username", helpers.phoneToUsername(phoneNumber));
好像用户在 then()
回调之后被保存了,但不应该是这样。
尝试return它:
return userQuery
.first(function (userResult) {
if (!helpers.isDefined(userResult)) {
userResult = new Parse.User();
userResult.set("username", helpers.phoneToUsername(phoneNumber));
userResult.set("password", helpers.generatePassword(phoneNumber));
userResult.set("displayName", displayName);
}
userResult.set("location", location);
userResult.set("smsVerified", false);
return userResult.save()
})
.then(function (userResult) {
console.log("userResult id " + userResult.id); <-- ERROR HERE
user = userResult;
return Verification.createSmsVerification(userResult);
})...
在黑暗中摸索了一段时间后,我发现问题是初始代码在 first()
回调中,而不是在 thenable 中。将最上面的代码行从 first(function()...
更改为 first().then(function()
已解决问题。
return userQuery.first()
.then(function (userResult) {
if (!helpers.isDefined(userResult)) {
userResult = new Parse.User();
userResult.set("username", helpers.phoneToUsername(phoneNumber));
userResult.set("password", helpers.generatePassword(phoneNumber));
userResult.set("displayName", displayName);
}
userResult.set("location", location);
userResult.set("smsVerified", false);
return userResult.save()
})
.then(function (userResult) {
console.log("userResult id " + userResult.id); <-- ERROR HERE
user = userResult;
return Verification.createSmsVerification(userResult);
})...