0

我按照指南在 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");
                ...
            }
        }
        ...
    });
});
4

2 回答 2

0

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

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);
    }
  });
});
于 2016-02-27T00:16:38.017 回答
0

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

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

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

于 2016-02-29T13:45:39.157 回答