【问题标题】:Is there a way to log/see if MongoDB .save() is actually working?有没有办法记录/查看 MongoDB .save() 是否实际工作?
【发布时间】:2016-09-10 02:24:41
【问题描述】:

我有一个连接到 Node.js Express 的 MongoDB,我有一个 API 控制器,它接受 POST 请求和 .save() 将请求正文发送到数据库。然而,即使它在控制台中正确记录了请求正文并在 .save() 方法中输入,我还是使用 mongo->db 检查了终端,但仍然没有创建任何内容。

有没有办法确定 MongoDB 是否真的在使用 MongoDB .save() 方法?还有如何检查 MongoDB 是否正确连接到服务器?

也尝试过快速日志记录:

这是服务器的设置方式:

const express = require('express'),
      app = express(),
      logger = require('morgan'),
      config = require('./config/main'),
      mongoose = require('mongoose'),
      bodyParser = require('body-parser'),
      router = require('./router');

mongoose.Promise = global.Promise;
mongoose.connect(config.database);

const server = app.listen(config.port);
console.log('Your server is running on port ' + config.port + '.');

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(logger('dev'));

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost:8080");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Credentials");
  res.header("Access-Control-Allow-Credentials", "true");
  next();
})

router(app);

以及服务器的配置:

module.exports = {
  'database': 'mongodb://localhost/testdatabase',
  'port': process.env.PORT || 3000,
  'secret': 'secretsecret',
}

编辑 2

我在控制器中的 .save:

  user.save(function(err, user) {
      if(err) { return next(err); }

      res.status(201).json({
        user: user
      })
    }) 

编辑 3 尝试使用mongoose.set('debug', true); 记录并得到以下结果:

【问题讨论】:

  • 这里有一些答案:stackoverflow.com/questions/6854431/…
  • @MilosLulic 抱歉,但似乎无法辨别我在寻找什么。你能帮忙吗
  • 如果使用mongoose,只需检查save()是否完成:mydoc.save().then(function(d){console.log('SAVED',d);})
  • @S.D.我用 .save 更新了原始帖子。 mydoc.save().then(function(d){console.log('SAVED',d);}) 应该去哪里?
  • @JoKo 你用的是什么IDE?如果你使用vscode之类的东西,那么你可以简单地在回调函数中放置一个断点并调试代码。

标签: node.js mongodb express mongoose


【解决方案1】:

您可以将猫鼬设置为调试模式以查看发生了什么。

mongoose.set('debug', true);

【讨论】:

  • 对不起,我应该把它放在哪里?我应该寻找什么?
  • 在 mongoose.connect 之后就好了。然后,Mongoose 将记录进出 mongo 的所有内容
  • 谢谢约翰内斯!刚试了一下,用截图更新了原来的帖子。这是否意味着 .save() 正在工作?可能是什么问题?
  • 现在对我来说一切都很好。您确定数据库中没有保存任何内容吗?
  • 我也有同样的问题;你是怎么解决的? @JoKo
猜你喜欢
  • 2011-02-15
  • 1970-01-01
  • 2015-03-09
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 2021-05-04
  • 1970-01-01
相关资源
最近更新 更多