猫鼬连接

 qiuqiu 发布于 2023-02-13 10:00

我从Mongoose网站上快速入手,我几乎复制了代码,但我无法使用Node.js连接MongoDB.

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

exports.test = function(req, res) {
  var db = mongoose.connection;
  db.on('error', console.error.bind(console, 'connection error:'));
  console.log("h1");
  db.once('open', function callback () {
    console.log("h");
  });
  res.render('test');
};

这是我的代码.控制台只打印h1,而不是h.我哪里错了?

2 个回答
  • 当您致电时mongoose.connect,它将与数据库建立连接.

    但是,您open在稍后的某个时间点(当处理请求时)附加事件侦听器,这意味着连接可能已经处于活动状态并且open事件已经被调用(您刚刚还没有侦听它) .

    您应该重新排列代码,以便事件处理程序尽可能接近(及时)连接调用:

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/test');
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function callback () {
      console.log("h");
    });
    
    exports.test = function(req,res) {
      res.render('test');
    };
    

    2023-02-13 10:02 回答
  • 最安全的方法是"监听连接事件".这样,您无需关心DB为您提供连接所需的时间.

    完成后 - 您应该启动服务器.另外.. config.MONGOOSE在您的应用中公开,因此您只有一个数据库连接.

    如果你想使用mongoose的连接,只需要在你的模块中配置config,然后调用config.Mongoose.希望这有助于某人!

    这是代码.

    var mongoURI;
    
    mongoose.connection.on("open", function(ref) {
      console.log("Connected to mongo server.");
      return start_up();
    });
    
    mongoose.connection.on("error", function(err) {
      console.log("Could not connect to mongo server!");
      return console.log(err);
    });
    
    mongoURI = "mongodb://localhost/dbanme";
    
    config.MONGOOSE = mongoose.connect(mongoURI);
    

    2023-02-13 10:02 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有