【问题标题】:Probleme with mongoose - NodeJS猫鼬的问题 - NodeJS
【发布时间】:2019-04-03 22:56:41
【问题描述】:

我来找你是因为我有一个我无法解决的问题。 我使用 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);

我的 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('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 路径发出发布请求时,我可以在 writeData 中看到 newTemperatureobject 以及请求发送的当前日期和温度,但我在使用 newTemperature.save 时遇到问题,没有任何反应

感谢您阅读我 希望比你能帮助我,对不起我的大概英语

【问题讨论】:

  • 你有什么错误吗?!
  • 你应该为 Mongoose 连接添加一些错误检查,看看你是否真的连接了。见here。您需要的是带有mongoose.connection.on(... 的行。看到您在应用启动时实际上已建立连接。
  • 我添加了 mongoose.connection.on('connected') ('error) 和 ('disconnected') 但也没有任何结果。但是当我尝试 sudo service mongod status 我有:Active: active (running) 如果我运行 mongoShell 并尝试显示 dbs,我没有应该创建的那个

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


【解决方案1】:

如果我没看错,保存方法不适用于您的模型。

当您调用 .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 来处理异步操作。请查看 node >= v7.7 中可用的任何一个(尤其是 async/await)。它将使使用异步操作成为一种乐趣,代码更短,没有回调地狱。

干杯。

【讨论】:

  • 我试试这个,但它不起作用。我去看看async/await
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 2020-03-26
  • 1970-01-01
  • 2020-09-18
  • 2021-06-01
相关资源
最近更新 更多