Я пытаюсь написать функцию Parse.com Облако кода для выполнения следующего рабочего процесса:Анализировать Облако Код: Логика Ветвления в Promises
- Пользователя предоставляет значения.
- Функция облачного кода проверяет, соответствует ли это значение объектам типа
code
. - Если нет, функция возвращает значение «не найден».
- Если это так, предполагается, что объект типа
code
имеет указатель на объект типаitem
. - Затем
code.item
проверяется, есть ли указатель на объект типаalert
. - Если нет, функция возвращает значение «не найден».
- Если
code.item.alert
Есть, то я хочу получить полный объектalert
, включая указатели, которые могут быть или не существовать, до 2 слоев.
Как я начинаю писать код для этой функции, я могу заставить его работать в точке проверки, чтобы узнать, существует ли code
и, если да, то также существует ли code.item.alert
.
Здесь возникает проблема. Как и в настоящее время, в рабочей версии моей функции возвращается возвращаемый объект alert
- это только тип класса и objectId. Я понимаю, почему это происходит, и я пытаюсь написать код, чтобы заполнить объект, прежде чем возвращать его, но я неудачу в этой попытке.
Вот код, который работает до сих пор (но возвращает только оболочку alert
объекта):
Parse.Cloud.define("alertLookup", function (request, response) {
Parse.Cloud.useMasterKey();
var codeQuery = new Parse.Query("code");
codeQuery.equalTo("value", request.params.code);
codeQuery.include("item");
codeQuery.find().then(function (codes) {
if (codes.length === 0) {
response.success("no item");
} else {
var code = codes[0];
var item = code.get("item");
var alert = item.get("alert");
if (alert === null || alert === undefined) {
response.success("no item");
} else {
response.success(alert);
}
}
}, function (error) {
response.error(error);
});
});
Вот что я пытался, что сбой с кодом ошибки 141:
Parse.Cloud.define("alertLookup", function (request, response) {
Parse.Cloud.useMasterKey();
var codeQuery = new Parse.Query("code");
codeQuery.equalTo("value", request.params.code);
codeQuery.include("item");
codeQuery.find().then(function (codes) {
if (codes.length === 0) {
response.success("no item");
} else {
var code = codes[0];
var item = code.get("item");
var alert = item.get("alert");
if (alert === null || alert === undefined) {
response.success("no item");
} else {
return alert.fetch();
}
}
}).then(function (a) {
response.success(a);
}, function (error) {
response.error(error);
});
});
Почему бы не позвонить fetch()
? Когда я вставляю операторы console.log()
, хотя alert
не является нулевым, return alert.fetch();
никогда не вызывается. По крайней мере, линия response.success(a);
никогда не вызывается. Почему нет?
что сообщение 141 об ошибке вы получаете? –
"undefined." Вот и все. – mbm29414