html - 如何在 Node.js Express 和 mongodb 中使用 find() 获取 html 中选定选项的值
问题描述
我正在尝试在 mongodb 中获取特定文档,并且正在使用 find()。问题是它没有给我在 html 文件中寻找的结果(例如:我选择 MALE 和 XL,我知道我的数据库中有)。我得到的是:
Connected successfully to server
{ _id: 5df3c05bdfcdbd13d89d7c91,
'D_id': '',
name: null,
gender: null,
breed: null,
size: null,
age: null,
location: null }
DONE
*我有那种空文件,但这不是我要求的。
HTML 文件:
<html>
<head>
</script>
</head>
<body>
<link rel ="stylesheet" type='text/css' href='form.css'>
<div class="form">
<form method="POST" action="http://localhost:8080" style="text-align:center">
<label>Gender:</label><br>
<select>
<option name="g_gender" value="MALE">MALE</option>
<option name="g_gender" value="FEMALE">FEMALE</option>
</select> <br><br>
<label>size:</label><br>
<select>
<option name="g_size" value="XS"> XS</option>
<option name="g_size" value="S"> S</option>
<option name="g_size" value="M"> M</option>
<option name="g_size" value="L"> L</option>
<option name="g_size" value="XL"> XL<br><br>
</select> <br><br>
<br><button type="submit" class="button" value="Reset">RESET</button>
<button type="submit" class="button" value="Submit">SEARCH</button>
</form>
</div>
</body>
</html>
node.js 文件:
var express = require('express');
const bodyParser= require('body-parser');
const MongoClient = require('mongodb').MongoClient;
const mongo_url = 'mongodb://localhost:27017';
const http = require('http');
const assert = require('assert');
const qstring=require('querystring');
var app = express();
app.use(bodyParser.urlencoded({extended: true}))
app.get('/', (req, res) => {
res.sendFile(__dirname + '/form.html');
})
http.createServer(function (req, res) {
if (req.method == "POST"){
var reqData = '';
req.on('data', function (chunk) {
reqData += chunk;
});
req.on('end', function() {
var postParams = qstring.parse(reqData);
getDogsData(postParams.g_gender,postParams.g_size,res);
});
function getDogsData(g_gender,g_size,res){
MongoClient.connect(mongo_url,{ useUnifiedTopology: true },function(err,client) {
assert.equal(null, err);
console.log("Connected successfully to server");
var database = client.db('Dogs');
const coll = database.collection('adptdog');
const cursor = coll.find({gender:g_gender,size:g_size});
cursor.forEach(function(doc) {
res.write(JSON.stringify(doc));
console.log(doc);
},function(err) {
console.log("DONE");
client.close();
});
});
}
}}).listen(8080);
解决方案
HTML code:
we have to add id and name into select tag then you can fetch value into the server-side.
<div class="form">
<form method="POST" action="http://localhost:8080" style="text-align:center">
<label>Gender:</label><br>
<select name="g_gender" id="g_gender">
<option name="g_gender" value="MALE">MALE</option>
<option name="g_gender" value="FEMALE">FEMALE</option>
</select> <br><br>
<label>size:</label><br>
<select name="g_size" id="g_size">
<option name="g_size" value="XS"> XS</option>
<option name="g_size" value="S"> S</option>
<option name="g_size" value="M"> M</option>
<option name="g_size" value="L"> L</option>
<option name="g_size" value="XL"> XL<br><br>
</select> <br><br>
<br><button type="submit" class="button" value="Reset">RESET</button>
<button type="submit" class="button" value="Submit">SEARCH</button>
</form>
</div>
you will request data into req.body.
node.js file:
var express = require('express');
const bodyParser= require('body-parser');
const MongoClient = require('mongodb').MongoClient;
const mongo_url = 'mongodb://localhost:27017';
const http = require('http');
const assert = require('assert');
const qstring=require('querystring');
var app = express();
app.use(bodyParser.urlencoded({extended: true}))
app.get('/', (req, res) => {
res.sendFile(__dirname + '/form.html');
})
http.createServer(function (req, res) {
if (req.method == "POST"){
let body=req.body;
getDogsData(body.g_gender,body.g_size,res);
function getDogsData(g_gender,g_size,res){
MongoClient.connect(mongo_url,{ useUnifiedTopology: true },function(err,client) {
assert.equal(null, err);
console.log("Connected successfully to server");
var database = client.db('Dogs');
const coll = database.collection('adptdog');
const cursor = coll.find({gender:g_gender,size:g_size});
cursor.forEach(function(doc) {
res.write(JSON.stringify(doc));
console.log(doc);
},function(err) {
console.log("DONE");
client.close();
});
});
}
}}).listen(8080);
推荐阅读
- html - 如何在 Div 上添加透明 Cicle Cut 效果?
- button - 两个以上的拆分按钮菜单在计量 ui 中重叠,你能解决这个问题吗
- javascript - JS - 根据属性合并 2 个数组
- php - php调整大小功能适用于宽度,但不适用于长度
- latex - 在哪里可以找到 Journal of Optimization Theory and Applications 的参考书目样式文件?
- c# - 将 Expression<> 合并到 LINQ 查询中
- python - 如何从 wine 数据集中解决 Keras 神经网络实现中的错误
- python - 从雅虎财经获取股票收益日期
- r - 如何根据来自 R 中另一个数据框的信息更改行值
- typescript - 如何处理简单对象的索引签名