我来找你,因为我有一个我无法解决的问题。 我使用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的问题,没有发生
感谢您的阅读 希望比你能帮助我并抱歉我的近似英语
答案 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)。它将使异步操作变得愉快,更短的代码没有回调地狱。
干杯。