在使用mongodb提交后插入更多的表单信息

insert more then form information after submit using mongodb

本文关键字:表单 信息 插入 mongodb 提交      更新时间:2023-09-26

我有一个简单的表单:

  <form action="/persons" method="POST">
    Name:<input type="text"  name="name"><br>
    URL:<input type="text"  name="quote"><br>
    <button type="submit">Submit</button>
  </form>

我使用mongodb将名称和url存储到数据库:

app.post('/persons', (req, res) => {
    db.collection('persons').save( req.body, (err, result) => {
        if (err) return console.log(err)
        console.log('saved to database')
        console.log(req.body)
        res.redirect('/')
    })
})

现在,对于每个url &我希望文档包含更多的值(用户不插入),像ratio,应该在用户发送"提交"后插入到数据库中。

例如,给定一些url和名称"Jessica Alba",我希望文档包含:{url: ...., name: Jessica Alba, ratio: 0}

我尝试了不同的事情,但都没有成功。最好的选择是什么?

可以使用点运算符访问Json对象的属性。

节点文件:

var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/test',connectCallback);
function connectCallback(err, db) {
  col = db.collection('persons');
  console.log('Connected to mongodb');
  }
var app = express();
//middlewares
app.use(bodyParser());
//routes
app.get('/', function (req, res) {
  res.sendFile(__dirname+'/index.html');
});
app.post('/persons', (req, res) => {
    req.body.ratio=0
    col.save( req.body, (err, result) => {
        if (err) 
            return console.log(err)
        console.log(result)
        console.log('saved to database')
        console.log(req.body)
        res.redirect('/')
    })
})
setTimeout(function() {
    app.listen(3000, function () {
    console.log('Sample app listening on port 3000!');
    });
}, 1000);

Index.html文件:

<html>
    <body>
        <form action="/persons" method="POST">
            Name:<input type="text"  name="name"><br>
            URL:<input type="text"  name="quote"><br>
            <button type="submit">Submit</button>
        </form>
    </body>
</html>