Hapi 框架中使用 hapi-mongodb 插件操作 MongoDB
介绍
Hapi 是一个 Node.js 服务端框架,提供了非常丰富和灵活的功能,如路由管理、插件、缓存、模板引擎等等。而 MongoDB 是一个非常流行的 NoSQL 数据库,使用方便,性能卓越。在 Hapi 中使用 MongoDB 时,我们可以使用 hapi-mongodb 插件,方便操作数据库。
安装
首先,我们需要使用 npm 安装 Hapi 和 hapi-mongodb:
npm install hapi hapi-mongodb --save
配置
接下来,我们需要在 Hapi 的配置中添加 MongoDB 的相关信息,例如主机地址、数据库名、用户名和密码等等。在一般的项目中,我们可以把这些信息保存在环境变量中,以免在代码中写死。
// javascriptcn.com 代码示例 const Hapi = require('hapi'); const server = new Hapi.Server(); server.connection({ host: 'localhost', port: 3000 }); server.register({ register: require('hapi-mongodb'), options: { url: process.env.MONGODB_URI || 'mongodb://localhost:27017/test', settings: { db: { native_parser: false } } } }, (err) => { if (err) { console.error(err); throw err; } }); server.start((err) => { if (err) { console.error(err); throw err; } });
使用
hapi-mongodb 插件提供了两种使用方式:promise 和 callback。我们可以根据项目需求选择合适的方式。
Promise
// javascriptcn.com 代码示例 server.route({ method: 'GET', path: '/', handler: (request, reply) => { const db = request.mongo.db; const collection = db.collection('myCollection'); collection.find().toArray() .then((docs) => { reply(docs); }) .catch((err) => { reply(err); }); } });
Callback
// javascriptcn.com 代码示例 server.route({ method: 'GET', path: '/', handler: (request, reply) => { const db = request.mongo.db; const collection = db.collection('myCollection'); collection.find().toArray((err, docs) => { if (err) { reply(err); return; } reply(docs); }); } });
示例代码
以下是一个完整的示例,包括路由和控制器。该示例演示了如何使用 hapi-mongodb 插件查询和插入数据。
// javascriptcn.com 代码示例 const Hapi = require('hapi'); const server = new Hapi.Server(); server.connection({ host: 'localhost', port: 3000 }); server.register({ register: require('hapi-mongodb'), options: { url: process.env.MONGODB_URI || 'mongodb://localhost:27017/test', settings: { db: { native_parser: false } } } }, (err) => { if (err) { console.error(err); throw err; } }); server.route({ method: 'GET', path: '/', handler: (request, reply) => { const db = request.mongo.db; const collection = db.collection('myCollection'); collection.find().toArray() .then((docs) => { reply(docs); }) .catch((err) => { reply(err); }); } }); server.route({ method: 'POST', path: '/', handler: (request, reply) => { const db = request.mongo.db; const collection = db.collection('myCollection'); const data = request.payload; collection.insert(data, (err, result) => { if (err) { reply(err); return; } reply(result); }); } }); server.start((err) => { if (err) { console.error(err); throw err; } });
总结
使用 hapi-mongodb 插件操作 MongoDB 非常方便,可以大大提高我们的开发效率。在实际项目中,我们可以使用这个插件来完成诸如数据查询、数据插入、数据更新等操作。希望以上介绍对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6549ff117d4982a6eb4368bd