Я делаю приложение, используя модуль nano npm с nodejs, одна из моих асинхронных функций предназначена для создания объекта в Cloudant, но я не совсем уверен, как обрабатывать Promise.resolve с обратным вызовом, который является важной частью ответ, который предполагается, должен ответить мой сервер.
Я хорошо справляюсь с созданием документа, но следующая часть — проверить, была ли ошибка при попытке сделать это, поэтому, если есть ошибка, я бы хотел, чтобы мой сервер возвращал объект с классическим сообщением об ошибке.
Это мой код:
exports.createMeeting = async (body) => {
var response;
object = {"name": "Billy Batson"}
console.log("-------------")
//Trying to insert the document
response = await Promise.resolve(db.insert(object).then((body, err) => {
//This is the part I'm trying to check if the db.insert did fail
if (err) {
response = {
message: 'Failure',
statusCode: '500',
}
console.log(JSON.stringify(response));
} else {
response = {
message: 'Ok',
statusCode: '201',
}
console.log(JSON.stringify(response));
}
}));
}
console.log("******* ", JSON.stringify(response));
return response;
}
Если я попытаюсь запустить этот код, вывод будет:
-------------
{"message":"Ok","statusCode":"201"}
******* undefined
Первый напечатанный объект связан с тем, что код достиг той части, где я присваиваю объекту ответа код состояния 201, но вторая часть не распознает значение «ответ» и строку «возврат ответа;» на самом деле не возвращает, я подтвердил это с почтальоном (он не получает ответа).
Я думаю, что проблема здесь в том, что я неправильно обрабатываю синтаксис .then(), я попытался перейти на классический обратный вызов с помощью:
response = await Promise.resolve(db.insert(object),(body, err) => {
if (err) {
response = {
message: 'Failure',
statusCode: '500',
}
console.log(JSON.stringify(response));
} else {
response = {
message: 'Ok',
statusCode: '201',
}
console.log(JSON.stringify(response));
}
});
Но печатает:
-------------
******* {"ok":true,"id":"502c0f01445f93673b06fbca6e984efe","rev":"1-a66ea199e7f947ef40aae2e724bebbb1"}
Это означает, что код не попадает в обратный вызов (он не печатает объекты «сбой» или «хорошо»)
Что мне здесь не хватает? :(
db.insert(object),(body, err)
? - person 1565986223   schedule 06.04.2019