标签: parse-cloud-code

Parse.com云代码错误:尝试更新用户时未调用成功/错误

香港专业教育学院从未使用过云代码/ javascript,我正在尝试编写一些解析云代码来查找使用传递给云功能的objectId的用户,然后更新持有朋友的用户关系,最后保存该用户.

以下是我使用的函数:

Parse.Cloud.define("addFriendToFriendsRelation", function(request, response) {

    Parse.Cloud.useMasterKey();
    var fromUserObjectId = request.params.fromUserObjectId;
    var acceptingUser = request.params.user;
    var query = new Parse.Query(Parse.User);

  // find the user the request was from using the objectId
    query.get(fromUserObjectId, {

      success: function(user) {

        var fromUser = user
        var relation = fromUser.relation("friends");
          relation.add(acceptingUser);
          fromUser.save({

            success: function() {
              response.success("Successfully saved the users relation")
           },

           error: function() {
              response.error("Save failed");
           }

          });

      },

     error: function() {

        response.error("Save failed");
     }

    });

});
Run Code Online (Sandbox Code Playgroud)

我设法使用Parse文档将它拼凑在一起.但我真的没跟好它.从未使用过javascript,我发现语法令人困惑.

然后即时调用函数

//fromUser is a PFUser object defined …
Run Code Online (Sandbox Code Playgroud)

javascript ios parse-platform parse-cloud-code

5
推荐指数
1
解决办法
686
查看次数

限制用户更新某些字段,但允许后端编辑它们

我在User模型上存储了一些永远不应由用户自己编辑的字段,而应仅由后端更新.所以我在beforeSave上做了验证:

// import all models
var Models = require('cloud/models/index');

// Models.User is a subclass of Parse.User
Parse.Cloud.beforeSave(Models.User, function (request, response) {
    var user = request.object;

    // prevent numberOfApples from being modified on clients
    if(user.existed()) {
        if(user.dirty('numberOfApples')) {
            response.error('User is not allowed to modify numberOfApples.');
            return;
        }
    }

    response.success();
});
Run Code Online (Sandbox Code Playgroud)

所以我检查之前是否存在模型,这很重要,所以这些东西不会在注册时触发.但后来我尝试从Parse仪表板手动更新该字段,它会引发错误.如何确保只允许用户编辑此字段,而仪表板或后端可以这样做(显然使用主密钥时).

parse-platform parse-cloud-code

5
推荐指数
1
解决办法
328
查看次数

Parse.com Javascript SDK使用include,但不起作用

我正在尝试从名为的表中获取数据Book.里面Book有一个Pointer<ParseUser>保存一个用户的指针.在ParseUser具有所谓的另一个指针Pais(这意味着Country在西班牙语).所以我想从任何地方获取每一个信息Book:

var query = new Parse.Query("Book");
query.include("user");
query.include("user.pais");
query.find({
success: function(books) {
      response.success(books);
},
error: function(error) {
  response.error({'resp': error.code, 'message': error.message});
}
});
Run Code Online (Sandbox Code Playgroud)

我没有得到对象,只是指针:

在此输入图像描述

为什么?我知道当我在iOS或Android中使用include(String key)或调用它时,它可以正常工作includeKey: NSString* key.

为什么它不能用于Javascript?

先感谢您.

问候.

拉斐尔.


编辑:

哦,我忘记了......我试过:

query.include(["user"]);

query.include(["user", "user.pais"]);

我见过开发人员使用它的一些例子.


第二次编辑:

我用过的最后一件事fetch就像:

Parse.Object.fetchAll(books, {
                               success: function(list) {
                                     response.success(list);
                               },
                               error: function(error2) {
                                     response.error({'resp': error2.code, 'message': error2.message});
                               },
                               });
Run Code Online (Sandbox Code Playgroud)

但也没有用.

这开始吓坏了我.


我们 的解决方法: …

javascript parse-platform parse-cloud-code

5
推荐指数
1
解决办法
812
查看次数

无法创建指向未保存的 ParseObject 的指针

我在从查询内部引用“User”对象时遇到问题。我有以下代码:

Parse.Cloud.define("getTabsBadges", function(request, response) {
  var UserObject = Parse.Object.extend('User');
  var user = new UserObject();
  user.id = request.params.userId;


  // Count all the locked messages sent to the user
  var receivedMessagesQuery = new Parse.Query('Message');
  receivedMessagesQuery.equalTo('status', 'L');
  receivedMessagesQuery.equalTo('toUser', user); // THIS LINE GENERATES THE ERROR


  receivedMessagesQuery.count({
    // more code here
  });
});
Run Code Online (Sandbox Code Playgroud)

我使用 CURL 调用该函数,但总是收到以下错误:

{"code":141,"error":"Error: Cannot create a pointer to an unsaved 
ParseObject\n    at n.value (Parse.js:14:4389)\n    at n 
(Parse.js:16:1219)\n    at r.default (Parse.js:16:2422)\n    at e.a.value 
(Parse.js:15:1931)\n    at main.js:9:25"}
Run Code Online (Sandbox Code Playgroud)

我在另一个项目中使用完全相同的代码,唯一的区别是我没有计算对象,而是找到它们并且它工作正常。我还验证了这两个项目中的表的列类型Pointer<_User>。是什么导致了这个问题?

javascript parse-platform parse-cloud-code

5
推荐指数
1
解决办法
3975
查看次数

错误:此处不允许解析对象

当我尝试运行计数功能时,我得到

错误:此处不允许解析对象

E2015-11-09T12:36:10.778Z]v184 Ran cloud function count with:
  Input: {}
  Result: Error: Parse Objects not allowed here
    at n (Parse.js:16:1063)
    at Parse.js:16:1927
    at Array.map (native)
    at n (Parse.js:16:1904)
    at n (Parse.js:16:1995)
    at r.default (Parse.js:16:2422)
    at Object.o.default.setCloudController.run (Parse.js:13:2159)
    at Object.n [as run] (Parse.js:13:1730)
    at e.query.find.success (main.js:10:19)
    at e.<anonymous> (Parse.js:14:28224)
Run Code Online (Sandbox Code Playgroud)

搜索结果引导我解决这个问题,但所有教程都提到以这种方式发送参数。这段代码曾经运行良好。

计数功能:

Parse.Cloud.define('count', function(request, response) {

var query = new Parse.Query('MyS');
  query.equalTo("Notify", true);
  query.notEqualTo ("MainEventCode", '5');

  query.find({
    success: function(results) {
      Parse.Cloud.run('http', {params : results}).then(
        function(result) {
          console.log('httpResponse is : ' …
Run Code Online (Sandbox Code Playgroud)

javascript parse-platform parse-cloud-code

5
推荐指数
1
解决办法
1542
查看次数

迁移到Heroku后,云代码中的解析查询无法正常工作

我已根据Parse博客上的迁移指南将我的Parse应用程序迁移到Heroku.除了在我的云代码中运行查询之外,事情似乎工作正常.这是我的代码:

Parse.Cloud.afterSave("Item", function(request) {
    //Parse.Cloud.useMasterKey(); //Uncomenting this line yields the same error

    var query = new Parse.Query(Parse.User);
    var prevAssigneeId = request.object.get("prevAssignee").id;
    var assigneeId = request.object.get("assignee").id;

    query.get(prevAssigneeId, { // <-- Results in an error
        success: function(prevAssignee) {
            console.log("Fetch prevAssignee: Success");
            query.get(assigneeId, {
                success: function(assignee) {
                    console.log("Fetch assignee: Success");

                    // Do something with the fetched users!
                },
                error: function(object, error) {
                   console.log("Query for assignee: ");
                   console.log(error);
                }
            });
        },
        error: function(object, error) {
            console.log("Query for prevAssignee: ");
            console.log(error); //<-- Error is logged …
Run Code Online (Sandbox Code Playgroud)

javascript migration heroku parse-platform parse-cloud-code

5
推荐指数
1
解决办法
528
查看次数

使用解析服务器无法获得"下划线"

我刚刚迁移了一个Parse Server,一切正常,除了云代码.我已经明白这是因为在我的main.js中我需要库"Underscore".

这是我的云代码功能:

    Parse.Cloud.define("ReadyUp", function(request, response) {
var _ = require('underscore');
    var fbid = request.user.get("fbid");
    var query = new Parse.Query("Spel");
    query.equalTo("lobby", fbid);
    query.find().then(function(results) {
        _.each(results, function(spel) {
            spel.addUnique("ready", fbid);
        });
        return Parse.Object.saveAll(results);
    }).then(function(result) {
        response.success(result);
    }, function(error) {
        response.error(error);
    });
});
Run Code Online (Sandbox Code Playgroud)

迁移前代码没有错误.我猜测要求找不到合适的文件夹.为了给你文件夹结构,它看起来像这样:

Cloudcode位置:mainfolder-> cloud-> main.js

下划线库:mainfolder-> node_modules->下划线(文件夹)

代码有问题还是文件夹结构有问题?

提前致谢!

/马丁

javascript heroku node.js parse-platform parse-cloud-code

5
推荐指数
1
解决办法
574
查看次数

如何在Cloud Code中关注用户链接?

在afterSave Cloud Code函数中如下:

Parse.Cloud.afterSave("Post", function (request) {

    var post = request.object;

    if (post.has('author')) {
        var author = post.get('author');  
        // author is a Link to a specific Parse.User   
    }

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取Post的作者字段指向的Parse用户的电子邮件.

在上面的示例中,author最终包含以下内容:

{
    "__type":"Pointer",
    "className":"_User",
    "objectId":"413wgL9vf1"
}
Run Code Online (Sandbox Code Playgroud)

本质上,我想读取email指针指向的用户的属性.

我尝试过author.get('email'),但失败了,说"未定义".电子邮件在数据库中设置.

这样做的正确方法是什么?我应该使用链接中的objectId编写针对User类的查询,还是有更简单的方法?

parse-platform parse-cloud-code

5
推荐指数
1
解决办法
39
查看次数

解析服务器云代码错误141:未经授权

我刚刚创建了一个用于在 Cloud9 上学习的解析服务器部署,当我使用 PostMan 使用 REST API 访问它时,一切正常。我现在正在尝试云功能。

我的 cloud.js 文件中有以下代码,

Parse.Cloud.define('hello', function(request, response) {
    var query = new Parse.Query("Test");
      query.find({
          success: function(data){
              response.success(query);
          },
          error: function(err){
              response.error(err);
          }
      })
});
Run Code Online (Sandbox Code Playgroud)

在响应中我收到以下错误,

{
  "code": 141,
  "error": {
    "message": "unauthorized"
  }
}
Run Code Online (Sandbox Code Playgroud)

我对 PostMan 的请求看起来像这样,

带有标头和 URL 的 Postman 请求

只要我不尝试查询并发送简单的响应(例如 ),响应就可以response.success("OK")

这是 Parse 的问题还是我错过了与授权相关的内容?

javascript rest node.js parse-cloud-code parse-server

5
推荐指数
1
解决办法
1507
查看次数

如何在Parse中从JSON创建特定类型的对象

我有一个Cloud Code脚本,可以从服务中提取一些JSON.该JSON包含一组对象.我想将它们保存到Parse,但使用特定的Parse类.我该怎么做?

这是我的代码.

Parse.Cloud.httpRequest({
    url: 'http://myservicehost.com', 
    headers: {
        'Authorization': 'XXX'
    },
    success: function(httpResponse) {
        console.log("Success!");

        var json = JSON.parse(httpResponse.text);
        var recipes = json.results;

        for(int i=0; i<recipes.length; i++) {
                var Recipe = Parse.Object.extend("Recipe");
                var recipeFromJSON = recipes[i];
                // how do i save recipeFromJSON into Recipe without setting all the fields one by one?
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

json parse-platform parse-cloud-code

4
推荐指数
1
解决办法
1294
查看次数