node.js - 如何使用 Nodejs 显示存储在 MongoDB 中的数据?
问题描述
这是我用来显示来自 MongoDB 的数据的代码。由于“结果未定义”而出现错误。我使用了 MongoDB 的 ID 来显示结果。但存储的数据不会显示在单独的页面上。
const express = require('express');
const app = express();
const ejs = require('ejs');
const assert = require('assert');
const bodyParser = require('body-parser');
const MongoClient = require('mongodb').MongoClient;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.set('view engine','ejs');
app.set('')
var url = 'mongodb://localhost:27017';
app.get('/form',(req, res)=>{
res.render('form');
});
app.get('/data',(req, res)=>{
MongoClient.connect(url, (err, db)=>{
assert.equal(null, err);
var dbo = db.db("form");
var details = dbo.collection('usertable').find();
details.forEach((data)=>{
if(_id == 5b5ef0b8e0d9c23c2012cef2){
result = item;
return true;
}
})
});
res.render('customerdata',{item: result });
});
我能够使用以下代码存储数据:
app.post('/form/submit', (req, res)=>{
var item = {
title: req.body.title,
content: req.body.content,
author: req.body.author
};
MongoClient.connect(url, (err, db)=>{
assert.equal(null, err);
var dbo = db.db("form");
dbo.collection('usertable').insertOne(item, (err, result)=>{
assert.equal(null, err);
console.log('Inserted');
db.close();
});
});
res.redirect('/form');
});
app.listen(8080);
解决方案
需要注意的几点:
- MongoClient.connect() 是异步的,但您正在同步调用 res.render()。
- 通常,您不想在每个请求时都启动与 MongoDB 的连接。
- 您可能应该这样做
dbo.collection('usertable').find().toArray(function(err, items) {...});
来访问数据。
推荐阅读
- php - 如何在 PHP 中转换日期格式
- c# - 如何在没有代码隐藏的情况下实现 OnPreviewMouseDown?
- php - mPDF PHP - 每页的特定脚注
- android - 如何生成pdf文件并给出命令在android中打印生成的文件
- ios - [iOS][ReactNative] 使用 react-viro 为通用 iOS 设备构建时架构 armv7 的未定义符号
- python - python plotly将值绘制为数千
- javascript - 如何将 JavaScript 变量传递给 DIV 标签?
- jhipster - 管理员用户无权查看应用程序的设置和其他方面
- c# - C# 在 Unity 中将 Vector3 与 Vector2 混淆
- python - 如何使用python在json中构建所有列表和字典元素的动态映射