【问题标题】:Node.js app.post does not populate MongoDB?Node.js app.post 不填充 MongoDB?
【发布时间】:2020-04-11 22:59:36
【问题描述】:

我在本地运行 Node.js、Express、Mongoose 和 Mongodb,并且在我的 app.js 中有此代码:

var express = require('express');
var app = express();
app.use(express.bodyParser());

// Decaler Mongoose
var mongoose = require('mongoose');
mongoose.connect('localhost','tinyreports');

// Require the Report model
var models = require('./models/reports.js');

app.post('/report/add', function(req, res) {
    var title = req.body.title;
    var recipients = req.body.recipients;

    var report = new models.Report({title:title});
    report.save( function(err, report) {
        if (err) return handleError(err);
        res.json({title:report.title});
    });

});

app.listen(3000);

console.log('server_start');

我也有以下模型(reports.js):

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var reportsSchema = new Schema({
    title:  String
});

exports.Report = mongoose.model('Report', reportsSchema);

当我运行 cURL 帖子 curl -X POST -H "Content-Type:application/json" -d '{"title":"test"}' http://localhost:3000/report/add 来填充数据库时,没有任何反应。

我在这里做错了什么?我的代码或整个设置有问题吗?

谢谢!

【问题讨论】:

  • 我没有发现任何明显的问题。您如何验证数据库内容?您是否尝试过在/report/add 中调用console.log 来确认一切正常?
  • 我刚试过,你的代码工作正常,也许尝试将你所有的库升级到最新?
  • @PeterLyons 我用标题做了一个 res.json,它返回了一个不错的数组,所以它应该可以工作。当我在 mongo shell 中执行 db.tinyreports.save({title:"test"}) 时,它会很好地填充数据库。但是当我运行我的代码时什么都没有。奇怪...
  • @sza 一切似乎都是最新的。虽然当我打开 mongo shell 时收到警告:Tue Jul 23 23:58:21.732 [initandlisten] ** WARNING: soft rlimits too low。文件数为 256,应至少为 1000
  • 哦,字符串与数组是否存在模式不匹配? req.body.title 是数组而不是字符串吗?您是否以某种方式让收件人和标题纵横交错?

标签: javascript node.js mongodb express mongoose


【解决方案1】:

所以,我想通了,我的代码没有任何问题,但由于我是 MongoDB 新手,我在数据库中查找错误的位置,因此找不到任何条目...DOH!

【讨论】:

    【解决方案2】:
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var reportsSchema = new Schema({
        title:  String
    });
    
    module.export = mongoose.model('Report', reportsSchema); 
    
    
    var report = new models({title:title});
        report.save( function(err, report) {
            if (err) return handleError(err);
            res.json({title:report.title});
        }); 
    
    change exports.report to module.export and var report =new models({})
    

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 2017-05-05
      • 2018-03-28
      • 2021-01-25
      • 2019-06-25
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多