Запрос облачного кода Parse-Server не возвращает все столбцы

Я настроил Parse-Server на AWS Elastic Beanstalk, следуя инструкциям этого руководства. Затем я написал функцию облачного кода, которая извлекает одну запись из определенного класса/коллекции. Коллекция содержит около 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");
                ...
            }
        }
        ...
    });
});

person Agha A. Raza    schedule 14.02.2016    source источник
comment
Являются ли отсутствующие столбцы указателями на другие объекты?   -  person kRiZ    schedule 15.02.2016
comment
Нет. Некоторые из них являются строковыми типами, а некоторые — числовыми.   -  person Agha A. Raza    schedule 15.02.2016


Ответы (2)


В вашем коде могут быть опечатки (построение части запроса). Попробуйте это вместо этого:

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);
    }
  });
});
person Simon Bengtsson    schedule 27.02.2016
comment
Спасибо, Саймон, в запросе действительно были опечатки, которые я позже исправил. Но настоящая проблема заключалась в том, что я не нажал кнопку «Завершить» в мастере миграции базы данных Parse. - person Agha A. Raza; 29.02.2016

Проблема оказалась в том, что когда я выполнял миграцию данных из Parse в мой экземпляр MongoDB, размещенный в mongolab, я не нажимал кнопку «Завершить» в мастере миграции Parse. Это было сделано намеренно, поскольку Parse предупреждал меня, что нажатие кнопки «Завершить» сделает миграцию постоянной, и я больше не смогу вернуться к базе данных, управляемой Parse. С другой стороны, я мог видеть, что все данные были успешно перенесены в mongolab, и технически этого должно было быть достаточно, чтобы мой сервер синтаксического анализа, размещенный на AWS, работал с этой новой базой данных без каких-либо проблем. Но каким-то образом нажатие кнопки «Завершить» в Parse сделало какое-то волшебство (я до сих пор не понимаю, что это может быть), и мои запросы начали возвращать ожидаемые результаты.

Я смог воспроизвести ту же проблему и при переходе на Heroku, поэтому я был уверен, что это не имеет ничего общего с AWS.

Надеюсь, это поможет кому-то.

person Agha A. Raza    schedule 29.02.2016