在MongoDB 3.6驱动程序中,当我通过回调连接到mongodb主机时,我按照快速入门指南进行操作:
来自示例:
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
assert.equal(null, err);
console.log("Connected successfully to server");
const db = client.db(dbName);
client.close();
});
什么是断言功能用法? 如果在promise方法中实现,我该如何使用assert?
从我的项目中,我不知道应该在哪里放置“断言”函数。 下面是我的server.js
import express from 'express';
import path from 'path';
import bodyParser from 'body-parser';
import { MongoClient } from 'mongodb';
import assert from 'assert';
const app = express();
const MONGO_URL = 'mongodb://localhost:27017';
const dbName = 'inventory';
app.use(express.static('../public'));
app.use(bodyParser.json());
app.get('/api/issues', (req, res) => {
db.collection('issues').find().toArray().then(issues => {
const metadata = { total_count: issues.length };
res.json({ _metadata: metadata, records: issues })
}).catch(error => {
console.log(error);
res.status(500).json({ message: `Internal Server Error: ${error}` });
});
});
let db;
MongoClient.connect(MONGO_URL).then(client => {
db = client.db(dbName);
app.listen(4000, () => {
console.log('App started on port 4000');
});
}).catch(error => {
console.log('ERROR:', error);
});
答案 0 :(得分:3)
当您使用回调样式时,如果发生错误,err
参数将出现此类错误,因此将不会是null
。
所以断言:
MongoClient.connect(url, function(err, client) {
assert.equal(null, err); // guarantees err is null, so no error has occurred
在代码继续之前,确保err
为null
。
在承诺风格中,您不需要断言。如果发生错误,将调用.catch
。
所以,你需要做的是在你的承诺中宣布一个.catch()
,你已经做过了:
MongoClient.connect(MONGO_URL).then(client => {
...
}).catch(error => { // this catch will be called when an error occurs
console.log('ERROR:', error);
});
注意:最后,如果您使用async
/ await
,则必须声明catch
块try/catch
来处理错误。 E.g。
(async () => {
try {
let client = await MongoClient.connect(MONGO_URL)
...
} catch(error) { // this catch will be called when an error occurs
console.log('ERROR:', error);
}
})();