вставьте больше информации о форме после отправки с помощью mongodb

#javascript #mongodb

#javascript #mongodb

Вопрос:

У меня есть простая форма:

   <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-адрес и имя «Джессика Альба», я хочу, чтобы документ содержал: { url: …. , имя: Джессика Альба, соотношение: 0 }

Я пробовал разные вещи и не добился успеха. какой лучший вариант?

Комментарии:

1. вы пытались добавить req.body.ratio=0 перед сохранением?

2. вы имеете в виду вместо req,body, {req.body, req.body.ratio = 0 } ?

3. Я имел в виду, что перед вызовом db.collectionName.save() добавьте строку для добавления свойства ratio.

4. db.collection(‘persons’).save({коэффициент: «0», возраст: 19, статус: «P»}), когда я добавил это раньше, это не сработало…

5. app.post(‘/ persons’, (req, res) => { req.body.ratio=0 db.collection(‘persons’).save( req.body, (ошибка, результат) …..

Ответ №1:

Доступ к свойствам объектов Json можно получить с помощью оператора dot.

Файл узла :

 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>