我是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);
});
但是当我通过命令行运行该文件时,它根本不会记录任何内容。我在这里做错了什么?
答案 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)