2017-08-15 27 views
0

使用Nodejs,Express我想以整數形式將數據存儲到數據庫中,並找到Mean。目前,數據(名稱和校園)均以字符串形式存儲,當使用$ avg查找平均值時,數據庫返回空值。數據庫中的表格是名稱和校園。名稱必須是String和Campus必須是整數。 $ avg在校園內使用相同名稱執行。 這是我server.js文件如何在NodeJS中以整數而不是字符串的形式將數據存儲到MongoDB中?

const express = require('express'); 
var path = require('path'); 

const bodyParser = require('body-parser') 
const MongoClient = require('mongodb').MongoClient 


MongoClient.connect('mongodb://dbname:[email protected]:11111/rank', (err, database) => { 
    if (err) return console.log(err) 
    db = database 
    app.listen(8080,() => { 
    console.log('listening on 8080') 
    }) 
}) 

const app = express(); 
app.set('view engine', 'ejs') 
app.use(express.static(path.join(__dirname, 'public'))); 



app.get('/', (req, res) => { 
    db.collection('colleges').find().toArray((err, result) => { 
    if (err) return console.log(err) 
    // renders index.ejs 
    res.render('index.ejs', {colleges: result}) 
    }) 
}) 

app.get('/answers', (req, res) => { 
    db.collection('colleges').find().toArray((err, result) => { 
    if (err) return console.log(err) 
    // renders index.ejs 
    res.render('index.ejs', {colleges: result}) 
    }) 
}) 


app.use(bodyParser.urlencoded({extender: true})) 


app.post('/colleges', (req, res) =>{ 
    db.collection('colleges').save(req.body, (err, result) =>{ 
     if (err) return console.log(err) 

     console.log('saved to database') 
     console.log(JSON.stringify(req.body)) 

     res.redirect('/') 
    }) 
}) 

這是我index.ejs文件有這種形式

<form action="/colleges" method="POST"> 
    <input type="text" placeholder="name" name="name"> 
    <input type="number" placeholder="campus" name="campus"> 
    <button type="submit">Submit</button> 
</form> 

代碼來計算平均

db.colleges.aggregate([ 
      { $match: { college: "RVCE"}}, 
      { $group: {_id:"campus", total: {$avg: "$campus"}}} 
      ]) 
+0

哪裏是存儲數據的代碼?執行'$ avg'查詢的代碼在哪裏? – pedromss

回答

0

你可以簡單的做到這一點我猜,

app.post('/colleges', (req, res) =>{ 
req.body.campus = parseInt(req.body.campus); 
db.collection('colleges').save(req.body, (err, result) =>{ 
    if (err) return console.log(err) 

    console.log('saved to database') 
    console.log(JSON.stringify(req.body)) 

    res.redirect('/') 
}); 
相關問題