我从the Mongoose website开始阅读快速入门,几乎复制了代码,但我无法使用Node连接MongoDB.js.

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.我错在哪里?

推荐答案

当你拨打mongoose.connect时,它将与数据库建立连接.

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

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

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');
};

Mongodb相关问答推荐

使用mongosh将大型json文件插入到mongo集合中

如何使用聚合管道查找未销售但存在于产品详细信息集合中的产品的ID

MongoDB - 将属性添加到数组中的对象(如果不存在)

MongoDB:如何从数组中的所有对象中删除属性?

如何在 mongodb 查找的外键中使用正则表达式

使用 mongo-driver/mongo 使用键/值对中的值表达式查找文档

有谁知道这个错误的修复方法(TypeError: Cannot assign to read only property ‘map’ of object '#')

findOneAndUpdate 和 findOneAndReplace 有什么区别?

更新 MongoDB 中嵌套实体数组中的属性

在mongo聚合中将ObjectID转换为字符串

mongoose如何在幕后工作

Mongodb:查询嵌套在数组中的json对象

RoR3 上的 Mongoid:1)如何在查询中返回特定字段? 2)需要什么 inverse_of ?

mongodb nodejs - 转换圆形 struct

MongoDB - 文件大小巨大且不断增长

如何使用node.js http服务器从mongodb返回大量行?

使用 MongoDB 的 map/reduce 来分组两个字段

MongoTemplate upsert - 从 pojo 进行更新的简单方法(哪个用户已编辑)?

我可以使用字符串作为 mongodb 文档的 ID 类型吗?

MongoDB Compass:select distinct field values