MongoDB插入文档的错误处理

2023-04-15 00:00:00 文档 错误 插入

在MongoDB中,插入文档时会返回一个WriteResult对象,其中包含了插入操作的一些信息,例如插入的文档数量、是否成功等。在使用Node.js进行操作时,我们可以通过回调函数或Promise来处理插入文档时的错误。

以下是一个简单的例子,演示如何插入一条文档,如果出现错误则打印错误信息:

const MongoClient = require('mongodb').MongoClient;

// Connection URL
const url = 'mongodb://localhost:27017';

// Database Name
const dbName = 'myproject';

// Create a new MongoClient
const client = new MongoClient(url);

// Use connect method to connect to the Server
client.connect(function(err) {
  console.log("Connected successfully to server");

  const db = client.db(dbName);

  const collection = db.collection('documents');

  // Insert a single document
  collection.insertOne({ name: 'pidancode.com' }, function(err, result) {
    if (err) {
      console.log(err);
    } else {
      console.log('Inserted document successfully');
    }
  });

  client.close();
});

在以上例子中,如果插入文档失败,将会打印错误信息。如果成功插入文档,则会打印“Inserted document successfully”。

如果你想使用Promise来处理错误,可以将以上代码进行如下修改:

const MongoClient = require('mongodb').MongoClient;

// Connection URL
const url = 'mongodb://localhost:27017';

// Database Name
const dbName = 'myproject';

// Create a new MongoClient
const client = new MongoClient(url);

// Use connect method to connect to the Server
client.connect()
  .then(() => {
    console.log("Connected successfully to server");

    const db = client.db(dbName);

    const collection = db.collection('documents');

    // Insert a single document
    return collection.insertOne({ name: '皮蛋编程' });
  })
  .then((result) => {
    console.log('Inserted document successfully');
  })
  .catch((err) => {
    console.log(err);
  })
  .finally(() => {
    client.close();
  });

在以上代码中,我们使用了Promise链式调用,保证了错误的处理和资源的释放。如果插入文档失败,则会在catch块中打印错误信息。无论成功或失败,最终都会关闭数据库连接。

相关文章