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

标签 javascript node.js mongodb express

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

相关文章:

javascript - 图像未在 IE10、9 和 8 上加载 .load 错误

javascript - LinkedIn 共享代码中“&source=”等号后面放什么?

javascript - Node js 单元测试 : mocking require dependency

javascript - 令人难以置信的奇怪的 JavaScript 日期问题

node.js - 使用 SHA256 签名与使用 RSA-SHA256 签名之间的区别

javascript - 如何测试嵌套 promise 的 Angular 服务功能?

javascript - NodeJS 未定义的 JSON 值

node.js - Mongoose 查找匹配输入子字符串的所有文档

javascript - 无法从 Node js建立mongodb连接

node.js - 如何在 nodeJs 服务器上正确使用 Forest Admin? (与森林 express Mongoose )