#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>