【发布时间】:2016-01-15 04:01:56
【问题描述】:
我正在尝试使用带有 MongoDB 作为数据库的sails.js,我认为我犯了一些基本错误,但无法弄清楚它是什么(是的,这两个框架的新手方面都有点):
如果我在sails 中使用默认的mongo 连接代码,似乎没有问题,而且似乎连接正常:
someMongodbServer: {
adapter: 'sails-mongo',
host: 'localhost',
port: 27017, }
现在,如果我向此连接添加“用户”,它也可以正常工作:
someMongodbServer: {
adapter: 'sails-mongo',
host: 'localhost',
port: 27017,
user: 'someusername', }
奇怪的事情从这里开始,如果我输入一个在我的 MongoDB 设置中不存在的用户名,它也可以工作。
当我使用这样的密码进行操作时 -
someMongodbServer: {
adapter: 'sails-mongo',
host: 'localhost',
port: 27017,
user: 'someusername',
password: '1111', }
它抛出以下错误并拒绝启动服务器:
A hook (`orm`) failed to load!
为了检查,我通过终端输入了 MongoDB 的用户名和密码,如下所示:
mongo --port 27017 -u "someusername" -p "1111" --authenticationDatabase "admin"
它工作正常,所以这个用户存在并且这是密码(对吗?)。
我什至无法确定问题出在我的 mongo 设置中还是在sails 中。
【问题讨论】:
-
尝试在密码下方添加“数据库:'database_name_here”。只是一个建议,没有承诺 - 如果有任何不同,请报告。您使用的是什么版本的sailsJs 和sails-mongo 适配器?
-
这并没有什么不同——不管有没有数据库信息,拥有密码都不会让服务器启动,拥有用户名似乎根本没有效果。我正在使用最新版本:sails v0.11.2 和sails-mongo v0.11.5
-
从命令行登录mongo,不要指定用户名和密码。你可以访问吗?还可以尝试在没有用户名或密码的情况下从sailsjs 登录,并实际使用sailsjs 更新您的mongo 数据库中的一些集合。换句话说,验证sailsjs 是否正在愉快地执行CRUD 操作(通过水线)。让我知道结果 - 取决于它是什么 - 我们可能已将问题隔离到您的 mongo 身份验证设置。
-
so:可以在没有用户名和密码的情况下从命令行访问 mongo(尽管用户名或密码错误,但不起作用)。 Sails 确实按预期使用了数据库——至少我认为是这样。当我通过风帆发布时,稍后会通过风帆看到结果。但是,当我尝试在 mongo 中查看这个(使用 db.collection.find().pretty())时,没有可见的结果。但是,该集合确实存在(当我使用显示集合时)。我很困惑。
-
查看您的 config/connections.js 文件 - 启用了哪个适配器? (未注释)。确保它只是 mongoServer 适配器设置(将其他所有内容注释掉)。此外,您将在项目的基础中看到一个 .tmp 文件夹。你看到localDiskDb.db 文件了吗?如果是这样,请删除它,看看现在启动应用程序时您的结果是否仍然可见?从你到目前为止告诉我的 a).您的 mongo 授权设置不正确,并且 b)。目前还怀疑sails 是否真的成功地与mongo 交谈。是用 localDisk 代替吗?