gpt4 book ai didi

node.js - 从 Mongoose promise 返回响应

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:38 24 4
gpt4 key购买 nike

此问题的后续内容> Stopping response if document isn't found因为有人建议我使用 Promise。

所以基本前提是,如果我们在数据库中找不到 ID,我希望 Node 返回“找不到 ID”消息。

v1.post("/", function(req, res) {

// If the project_id isn't provided, return with an error.
if ( !("project_id" in req.body) ) {
return res.send("You need to provide Project ID");
}

// Check if the Project ID is in the file.
helper.documentExists( ProjectsData, {project_id: req.body.project_id} )
.then(function(c) {
if ( c == 0 ) {
return res.send("The provided Project Id does not exist in our database.");
} else {
var gameDataObj = req.body;

GameData.addGameId(gameDataObj, function (err, doc) {
if (err) {
if (err.name == "ValidationError") {
return res.send("Please send all the required details.");
}
throw err;
};

res.json(doc);
})
};
});
});

和helper.documentExists

module.exports = {
documentExists: function(collection, query) {
return collection.count( query ).exec();
},
};

但是脚本在此之后继续运行并打印“找不到所需的数据”。

Output:
required data not found
1

我正在使用原生 ES6 Promise。

var mongoose = require("mongoose");
mongoose.Promise = global.Promise;

编辑:包括整个获取路线。 (稍后将修复这些抛出错误)

最佳答案

#######POINT 1#########
ProjectsData.count( {project_id: req.body.project_id} )

.then(function(c) {
#######POINT 3#########
if ( c == 0 ) {
console.log("1");
return res.send("The provided Project Id does not exist in our database.");
console.log("2");
}
});
#######POINT 2#########
//some other logic
console.log("required data not found");

遵循异步工作流程:在第 1 点之后,创建 Promise 并附加您的处理程序。现在,第 2 点将继续,同时(在未来的某个时间, promise 得到解决,您将到达第 3 点。

由于我对您的工作流程/目的的了解有限,我想说只需将第 2 点代码放在第 3 点的 ifelse{} 中(正如您正确的那样)在评论中猜测)。编辑:感谢@jfriend00指出我之前版本的答案中的一个严重错误。

关于node.js - 从 Mongoose promise 返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com