基本节点/mongo/mongoose 连接不起作用
Posted
技术标签:
【中文标题】基本节点/mongo/mongoose 连接不起作用【英文标题】:Basic node/mongo/mongoose connection not working 【发布时间】:2015-01-18 11:42:16 【问题描述】:我是 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);
);
但是当我通过命令行运行该文件时,它根本不会记录任何内容。我在这里做错了什么?
【问题讨论】:
我认为您忘记了本地主机的端口。默认情况下 mongo 在 27017 运行。 端口如果是27017则不需要。 【参考方案1】:在connection
成功建立后将其设为callback
函数。如果它不在回调方法中,由于其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);
);
)
【讨论】:
【参考方案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);
);
)
【讨论】:
【参考方案3】:如果您不太确定 mongoose.connect 方法的 URL 字符串应该是什么。不用担心,转到您的命令提示符,输入 mongo。
这将启动应用程序,您可以在其中查看连接详细信息,例如
然后使用相同的 URL 并附加您的 db-name
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)
);
希望对你有帮助!!
【讨论】:
以上是关于基本节点/mongo/mongoose 连接不起作用的主要内容,如果未能解决你的问题,请参考以下文章
(Mongo/Mongoose) 如何处理等待多个查询的结果