这个例子很直接,但并不奇怪,它不起作用。 mLate是Late表中的对象或对象数组。 我的代码:
var user = Parse.Object.extend("User");
var userQuery = new Parse.Query(Parse.User);
var Late = Parse.Object.extend("Late");
var lateQuery = new Parse.Query(Late);
userQuery.get("yCDDEWoiwM", {//this is where the userID goes
success: function (userDetails) {
var relation = userDetails.relation("mLate");
relation.add(mLate);
userDetails.save();
鉴于Parse SDK,我无法想象我哪里出错了。我一直在 POST https://api.parse.com/1/classes/_User/yCDDEWoiwM 400(错误请求)
新的假设和更多代码
我知道这是非常简单的事情,我很生气,Parse很少会为他们的解释添加细微的细节。你见过他们的API(好吧,我不想上我的肥皂盒......)
我的假设是我多次从Late表中转换了Parse.Object,并且不知何故Parse不再知道那里发生了什么。
以下是对代码的更全面的了解:
var user = Parse.Object.extend("User");
var userQuery = new Parse.Query(Parse.User);
var Late = Parse.Object.extend("Late");
var lateQuery = new Parse.Query(Late);
userQuery.get("yCDDEWoiwM", {//this is where the userID goes
success: function (userDetails) {
mLate = [];
mLate1 = [];
lateQuery.find({
success: function (allLate) {
var aLate = allLate
for (var i = 0; i < aLate.length; i++){
var oneLate = aLate[i];
if(something valid) {
mLate.push(oneLate)
}else{
mLate1.push(oneLate)
var relation = userDetails.relation("mLate");
relation.add(mLate);
userDetails.save();
答案 0 :(得分:2)
您不能以这种方式扩展用户。所有特殊类(用户,安装,角色等)都应该像这样解决:
"_User", "_Roles", "_Installation"
所以例如:
var user = Parse.Object.extend("_User");
但以这种方式引用它们会更好:
var user = Parse.Object.extend(Parse.User);
但据我所知,你也不需要创建user
对象的第一行。你也不需要&#34;延伸&#34;一个对象,如果您想要做的就是创建一个查询。通常&#34;延伸&#34;如果你想创建一个指针,但在你的情况下,你不需要。
看看这是否适合你:
//var user = Parse.Object.extend(Parse.User);
var userQuery = new Parse.Query(Parse.User);
//var Late = Parse.Object.extend("Late");
var lateQuery = new Parse.Query("Late");
userQuery.get("yCDDEWoiwM", {//this is where the userID goes
success: function (userDetails) {
var relation = userDetails.relation("mLate");
relation.add(mLate);
userDetails.save();
如果您想让查询更具动态性,您可以这样做:
var userQuery = new Parse.Query(Parse.User);
queryQuery.equalTo("objectId", userId);
userQuery.first().then(function(userDetails){
var relation = userDetails.relation("mLate");
relation.add(mLate);
return Parse.Promise.when(userDetails.save());
}).then( // make your call to response.success ...);
另一个可能的问题是,在userDetails.save()
操作有机会完成之前,您的函数正在返回。如果您将查询修改为类似上述内容以使用Promise,那么它将保证对save()
的异步调用将实际完成。
未显示的是保留链的延续,可以调用response.success
或error
,但您可以添加。{/ p>
答案 1 :(得分:0)
意图没有100%明确,因为没有定义mLate变量,但你可以得到这样的用户:
var user = new Parse.User({id:"yCDDEWoiwM"});
user.fetch().then(function(user) {
// add to the relation here, then
return user.save();
}).then(function () {
console.log("saved");
});