与mongoose有关的问题 - NodeJS

时间:2017-11-28 20:32:20

标签: javascript node.js mongodb mongoose mongoose-schema

我来找你,因为我有一个我无法解决的问题。 我使用nodejs,express和mongodb特别是mongoose。

我的快递服务器有效,但我无法在我的数据库中插入文件而且我不知道为什么。使用" console.log()"我看到mongoose.model.save从未被调用过或者这个函数存在问题。

我的app.js

var express  = require('express');
var bodyParser = require('body-parser');
var connect = require('connect');
var app      = express();
var port     = process.env.PORT || 8080;

// Configuration
app.use(connect.logger('dev'));
app.use(connect.json());  
app.use(connect.urlencoded());

app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
})); 


app.listen(port);

require('./routes/routes.js')(app);

console.log('The App runs on port ' + port);

我的路线.js

var writeData = require('/config/writeData');

var baseurl = '/niceproject'

module.exports = function(app) {



app.get(baseurl + '/', function(req, res) {

    res.end("Node-Android-Project"); 
});




app.post(baseurl + '/writeTemp', function(req, res) {

    var heure = req.body.heure;
    var temperature = req.body.temperature;

    console.log('req.body' + req.body);

    writeData.writeTemperature(heure,temperature,function(found){
        console.log(found);
        res.json(found);
    });
});
}

我的writeData.js

var mongoose = require('mongoose');
var model = require('/config/models.js');
var temperatureCollection = model.temperature;
var personneCollection = model.personne ; 
var sonCollection = model.sound;

exports.writeTemperature = function(heure,temperature,callback) {


var newTemperature = new temperatureCollection({
    id : 1,
    heure: new Date(),
    temperature : temperature
});


console.log('new temp: ' + newTemperature);
newTemperature.save(function(err){
    console.log('test');
    if(err){
        console.log('erreur' +  err);
        callback(err);
    }
    console.log(newTemperature);
    callback({'response':"temperature ajouté"});
});


}

和我的model.js

var mongoose = require('mongoose');

var Schema = mongoose.Schema;

var temperatureSchema = mongoose.Schema({    
    id : Number,
    temperature : Number,
    heure : Date
});

var personneSchema = mongoose.Schema({
    id : Number,
    nbPersonne : Number,
    heure : Date
});

var sonSchema = mongoose.Schema({
    id : Number,
    niveauDb : Number,
    heure : Date
});


mongoose.connect('mongodb://localhost/nightAdvisorDatabase');


var temperatureModel = mongoose.model('temperature', temperatureSchema);   
var personneModel = mongoose.model('personne', personneSchema);
var soundModel = mongoose.model('niveauDb',sonSchema);


module.exports = {
temperature : temperatureModel,
personne : personneModel,
sound : soundModel
};

所以,当我用/ niceproject / writeTemp路径发出一个post请求时,我可以看到我的writeData中的newTemperatureobject,当前日期和请求发送的温度,但是我遇到newTemperature.save的问题,没有发生

感谢您的阅读 希望比你能帮助我并抱歉我的近似英语

1 个答案:

答案 0 :(得分:0)

如果我读了你的话,保存方法对你的模型不起作用。

当你调用.save()时,你应该将两个参数传递给save方法的回调。 而不是下面这个。

newTemperature.save(function(err){
console.log('test');
if(err){
    console.log('erreur' +  err);
    callback(err);
}
console.log(newTemperature);
callback({'response':"temperature ajouté"});

});

你应该这样写。

newTemperature.save(function(err,newTemp){
console.log('test');
if(err){
    console.log('erreur' +  err);
    callback(err);
    return;

}
console.log(newTemp);
callback({'response':"temperature ajouté"});

});

如果操作成功,newTemp参数用于保存结果。 试试这个解决方案。并提供反馈。

看起来您没有使用Promises或async / await来处理异步操作。请查看节点> = v7.7中可用的任何人(特别是async / await)。它将使异步操作变得愉快,更短的代码没有回调地狱。

干杯。