Parse-Server 云代码查询不返回所有列

Posted

技术标签:

【中文标题】Parse-Server 云代码查询不返回所有列【英文标题】:Parse-Server Cloud Code Query Doesn't Return All Columns 【发布时间】:2016-02-14 14:06:02 【问题描述】:

我已按照 this 指南在 AWS Elastic Beanstalk 上设置 Parse-Server。然后我编写了一个云代码函数,它从特定的类/集合中获取一条记录。该集合包含大约 20 列。但是,作为查询结果获取的对象仅包含大约 8 列。我已确保记录中确实包含查询遗漏的列中的数据。我在这里遗漏了什么还是 Parse 中的某些限制?有没有办法强制 Parse 获取这些列?

Parse.Cloud.define('confirmAppointment', function(request, response) 
    var staffId = request.params.staffId;
    var appointmentId = request.params.appointmentId;

    var appointmentRequest = Parse.Object.extend("AppointmentRequest");
    appointmentRequest.id = appointmentId;
    appointmentRequest.staffId = staffId;

    var query = new Parse.Query(appointmentRequest);

    query.first(
        useMasterKey: true,
        success: function(appointment) 
            if (appointment) 

                // these fields are not found in the fetched appointment object
                // they do exist however in mongodb
                var requesterUserId = appointment.get("requesterUserId");
                var staffUserId = appointment.get("staffUserId");
                var staffName = appointment.get("staffNameEn");
                ...
            
        
        ...
    );
);

【问题讨论】:

缺失的列是指向其他对象的指针类型吗? 没有。有的是字符串类型,有的是数值类型。 【参考方案1】:

您的代码中可能有一些拼写错误(查询部分的构造)。试试这个:

Parse.Cloud.define('confirmAppointment', function(req, res) 
  var staffId = req.params.staffId;
  var appointmentId = req.params.appointmentId;

  var query = new Parse.Query("AppointmentRequest");
  query.equalTo('objectId', appointmentId);
  query.equalTo('staffId', staffId);

  query.first(
    useMasterKey: true,
    success: function(appointment) 
      res.success(appointment.get("requesterUserId"));
    ,
    error: function(err) 
      res.error(err);
    
  );
);

【讨论】:

谢谢西蒙,这个查询确实有一些错别字,我后来更正了。但真正的问题是我没有点击 Parse 数据库迁移向导中的 Finalize 按钮。【参考方案2】:

问题原来是当我将数据从 Parse 迁移到我的 mongolab 托管的 MongoDB 实例时,我没有在 Parse 迁移向导中单击“完成”按钮。这是故意的,因为 Parse 警告我单击“完成”将使迁移永久化,并且我将无法再返回到 Parse 托管数据库。另一方面,我可以看到所有数据都已成功迁移到 mongolab,从技术上讲,我的 AWS 托管解析服务器应该足以在这个新数据库上运行而没有任何问题。但不知何故,单击 Parse 中的“Finalize”按钮做了一些魔术(我仍然不明白它可能是什么),我的查询开始返回预期的结果。

我在迁移到 Heroku 时也能重现同样的问题,所以我确信这与 AWS 无关。

希望这会对某人有所帮助。

【讨论】:

以上是关于Parse-Server 云代码查询不返回所有列的主要内容,如果未能解决你的问题,请参考以下文章

Parse-Server iOS SDK - 创建返回 PFQuery 结果的函数

如何使用 Typescript 而不是 Javascript 在解析服务器中编写云代码?

Parse-Server 文件 URL 没有改变

如何使用 php parse-server sdk 将 ParseQuery::orQueries 与 matchQuery 结合起来

解析云代码嵌套查询时未调用代码 141 成功/错误消息

公共云数据库查询不应该返回 nil