基本节点/ mongo / mongoose连接无法正常工作

时间:2014-11-20 14:51:14

标签: javascript node.js mongodb mongoose mean-stack

我是MEAN堆栈开发的新手。我已经在MongoDB中创建了一个名为'framework'的数据库和一个名为'users'的集合,其中包含一些json。我可以看到所有这些,并且很高兴通过Mac终端使用mongo命令。

现在我正在我的应用程序中编写一些Mongoose并测试一切正常,我只是想获得一个集合名称列表。我试过这个:

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/framework");

mongoose.connection.db.collectionNames(function (err, names) {
  if (err) console.log(err);
  else console.log(names);
});

但是当我通过命令行运行该文件时,它根本不会记录任何内容。我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

callback 成功建立后,将其设为connection功能。如果没有它在回调方法中,它可能会在成功建立与数据库的连接之前执行,因为它具有asynchronous性质。

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/framework");

mongoose.connection.on('connected', function () {
    mongoose.connection.db.collectionNames(function (err, names) {
        if (err) console.log(err);
        else console.log(names);
    });
})

答案 1 :(得分:2)

不推荐使用mongoose.connection.db.collectionNames。使用此代码获取所有集合的列表

const mongoose = require("mongoose")
mongoose.connect("mongodb://localhost:27017/framework");
mongoose.connection.on('open', () => {
  console.log('Connected to mongodb server.');
  mongoose.connection.db.listCollections().toArray(function (err, names) {
    console.log(names);
   });
})

答案 2 :(得分:0)

如果您不太清楚mongoose.connect方法的URL字符串应该是什么。不用担心,请转到命令提示符,键入 mongo

这将启动应用程序,您可以在其中查看连接详细信息

enter image description here

然后使用添加了db-name的相同URL

const mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/db-name").then(
    ()=> console.log('connected to db')
).catch(
    (err)=> console.error(err)
);

希望这会有所帮助!