gpt4 book ai didi

javascript - 回调、错误捕获和 MongoDB 的问题

转载 作者:行者123 更新时间:2023-11-30 21:13:53 24 4
gpt4 key购买 nike

我一直在开发一个允许我将公司添加到数据库的应用程序。最初我的代码是纯粹的意大利面条,所以我想适本地模块化它。为此,我添加了路由、 Controller 和 Dao。

这就是我的代码现在的样子

路线

  app.post('/loadcompanies', (req, res)=> {
companiesController.loadcompany(req.body, (results)=>{
console.log(results);
res.send(200, "working!");
})
})

Controller

module.exports.loadCompany = (body, callback)=>{
companiesDao.loadCompany(body, callback);
}

module.exports.loadCompany = (company, callback)=>{
MongoClient.connect(conexionString, (err, database) => {
if (err) console.log(err);
db = database;
console.log(company);
db.collection('companies').insert(company, (err, result)=>{
callback({message:"Succesfully loaded company", company:result});
});
})
}

我目前担心的是,在像这样模块化时处理错误会令人困惑。我尝试在数据库插入和抛出错误周围添加一个 try-catch 方法(如果有),但这似乎不起作用。我尝试过的其他事情是在回调中返回错误,如下所示:

if (err) callback (err, null);

但我最终收到“发送后无法设置 header ”。错误。

在这种情况下,您将如何处理错误?例如,在有人试图在唯一元素中添加重复条目的情况下。

最佳答案

您应该能够简单地在插入函数的回调中进行错误检查:

db.collection('companies').insert(company, (err, result)=>{
if (err) {
callback(err, null);
return;
}
callback(null, {message:"Succesfully loaded company", company:result});
});

如果您遇到您所说的错误,那可能是因为数据库实际上返回了一个错误。您还可以使您的错误更具体,例如:

module.exports.loadCompany = (company, callback)=>{
MongoClient.connect(conexionString, (err, database) => {
if (err) {
callback(new Error('Connection error: ' + err.Error());
return;
}
db = database;
console.log(company);
db.collection('companies').insert(company, (err, result)=>{
if (err) {
callback(new Error('Insertion error: ' + err.Error());
return;
}
callback(null, {message:"Succesfully loaded company", company:result});
});
})

关于javascript - 回调、错误捕获和 MongoDB 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45871792/

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