2017-11-28 1 views
0

해결할 수없는 문제가있어서 찾아 왔습니다. 나는 nodejs, express 및 mongodb를 특히 몽구스로 사용합니다.몽구스에 문제가 있습니다 - NodeJS

익스프레스 서버가 작동하지만 데이터베이스에 문서를 삽입 할 수 없어 그 이유를 모르겠습니다. "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); 

내 route.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('fuckinnnnnnnnnnnnnnnnnn' + 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 경로를 사용하여 게시물 요청을하면 현재 날짜와 온도로 writeData에서 newTemperature 객체를 볼 수 있지만 newTemperature.save에 문제가있는 경우 nothings가 발생합니다

당신이 저와 유감을 도울 수있는 것보다 나에게 희망을 읽기위한

덕분에 나의 대략적인 영어

+0

오류를 받으셨습니까? – Yahya

+0

Mongoose 연결에 대한 오류 검사를 추가하여 실제로 연결되어 있는지 여부를 확인해야합니다. [here] (http://theholmesoffice.com/mongoose-connection-best-practice/)를 참조하십시오. 당신이 필요로하는 것은'mongoose.connection.on (...')이있는 줄입니다. 앱이 시작할 때 실제로 연결되어 있는지 확인하십시오. – MikaS

+0

mongoose.connection.on ('connected') ('error)와 (' 연결이 끊긴 ')하지만 nothings appens도.하지만 내가 sudo 서비스 mongod 상태를 시도 할 때 : 활성 : 활성 (실행 중) mongoShell을 실행하고 dbs를 표시하려고하면 내가 만들어야 할 하나가 없어 – Jamesp

답변

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에서 사용 가능한 그들 중 누구든지 (특히 비동기식/대기식)을 조사하십시오. 그것은 비동기 작업을 즐거움, 콜백 지옥이없는 더 짧은 코드로 만들 것입니다.

건배.

+0

이것을 시도해도 작동하지 않습니다. 비동기식/기다리기를 살펴볼 것입니다. – Jamesp

관련 문제