我正在通过mongoose编写数据库代码,但在终端mongoose.connection.on上遇到此错误

时间:2018-09-04 06:01:13

标签: node.js mongodb mongoose

每次启动应用程序时都会出现此错误。..错误在屏幕截图中。请让我知道如何解决此问题。谢谢。enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

您收到错误消息,因为尝试访问它时Mongoose.connection尚不存在。您需要将回调用作

const Mongoose=require("mongoose").connect(config.dbURL,(error)=>{
     if (!error) {
         Moongose.connection.on("error",(error)=>{...your code here ..});
     }
})

或使用Promise

const Mongoose=require("mongoose").connect(config.dbURL)
    .then(()=>{
         Moongose.connection.on("error",(error)=>{...your code here ..});
     });

答案 1 :(得分:0)

您绝对应该使用某些变量/标识符来存储连接,如Mongoose文档here中所述。

console.log您的config并检查是否已正确提取它们。
如果您提供更多详细信息并使用代码段而不是屏幕截图,则社区也会提供更好的帮助。

接下来,检查您的数据库URL是否以mongodb://开头。

然后,您在定义架构line 19的{​​{1}}上出现拼写错误,但试图在charUser上建模chatUser

尝试在导入猫鼬之后放line 27

此外,我建议您使用以下样式:
1.创建Mongoose.promise = Promise;,它将为您导出数据库连接。

db.js


2.以这种方式使用模型文件中的连接:

const mongoose = require('mongoose');

mongoose.Promise = Promise;

const options = {
  poolSize: 25,
  socketTimeoutMS: 0,
  keepAlive: true,
  reconnectTries: 30,
  user: 'MONGODB_USER',
  pass: 'MONGODB_PASS',
  auth: {
    authdb: 'MONGODB_AUTH_DB',
  },
};

const dbname = 'db_name_goes_here';
const host = 'db_server_URI_goes_here';
const port = port_number_goes_here || 27017;
const uri = `mongodb://${host}:${port}/${dbname}`; // a template string

const db = mongoose.createConnection(uri, options);

module.exports = db;

答案 2 :(得分:0)

尝试一下:-

const MongoClient = require('mongodb').MongoClient;
 // Connection URL
 const url = 'mongodb://localhost:27017';  
// Database Name
const dbName = 'test';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
assert.equal(null, err);
console.log("Connected successfully to server");
const db = client.db(dbName);
});