【问题标题】:sails-mongo auth error in sails 0.10Sails 0.10 中的sails-mongo 身份验证错误
【发布时间】:2014-04-02 08:27:39
【问题描述】:

使用 "sails-mongo": "^0.10.0-rc2", "sails": "~0.10.0-rc4" 我在 sails lift 上收到以下错误。

verbose: Loading adapter ( sails-mongo ) for algorithm  from `node_modules` directory...
Failed to load c++ bson extension, using pure JS version
verbose: Starting ORM...
error: A hook (`orm`) failed to load!
error: MongoError: auth fails
    at Object.toError (/home/default/Projects/machine_learning_data_sets/machine-learning-    engine/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/utils.js:110:11)
    at /home/default/Projects/machine_learning_data_sets/machine-learning-    engine/node_modules/sails-    mongo/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js:39:33
    at /home/default/Projects/machine_learning_data_sets/machine-learning-engine/node_modules/sails-mongo/node_modules/mongodb/lib/mongodb/db.js:1806:9
    at Server.Base._callHandler (/home/default/Projects/machine_learning_data_sets/machine-    learning-engine/node_modules/sails-    mongo/node_modules/mongodb/lib/mongodb/connection/base.js:442:41)
    at /home/default/Projects/machine_learning_data_sets/machine-learning-    engine/node_modules/sails-    mongo/node_modules/mongodb/lib/mongodb/connection/server.js:485:18
    at MongoReply.parseBody (/home/default/Projects/machine_learning_data_sets/machine-    learning-engine/node_modules/sails-    mongo/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
    at null.<anonymous> (/home/default/Projects/machine_learning_data_sets/machine-learning-    engine/node_modules/sails-        mongo/node_modules/mongodb/lib/mongodb/connection/server.js:443:20)
    at EventEmitter.emit (events.js:95:17)
    at null.<anonymous> (/home/default/Projects/machine_learning_data_sets/machine-learning-    engine/node_modules/sails-    mongo/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:191:13)
    at EventEmitter.emit (events.js:98:17)
verbose: Lowering sails...
verbose: Sent kill signal to child process (12033)...
verbose: Shutting down socket server...
verbose: Shutting down HTTP server...

这是在本地 mongodb 上,可在 mongo 控制台中访问。

我的连接是由

配置的
  mongo: {
    adapter   : 'sails-mongo',
    host      : 'localhost',
    port      : 27017,
    user      : '',
    password  : '',
    database  : 'mle'
  },

【问题讨论】:

  • 尝试删除空白userpassword
  • 没有什么不同。我很确定我又把事情搞砸了,似乎有人在不久前对 0.9.x 版本的风帆有非常相似的问题。
  • 一个干净的风帆 0.10.0-rc4 安装与上述配置配合得很好......我肯定在某个地方搞砸了(可能在上次迁移中)
  • 知道了。在添加我自己的之前,我没有删除示例 mongo 连接,即使它没有被任何模型使用,它仍然被调用。在发布问题之前,我可能应该给自己找一只橡皮鸭,并与它交谈几个小时。
  • 如果是这种情况——示例 mongo 连接在没有被任何模型使用的情况下被调用——你绝对应该将它作为一个问题发布在 Sails GitHub repository 上。只有在模型连接到它们时才应该使用连接。

标签: mongodb sails.js waterline


【解决方案1】:

在我的情况下,我使用 url 来连接 mongodb,如下所示

adapter: 'sails-mongo',
url: 'mongodb://<USERNAME>:<PASSWORD>@<HOST>/<DATABASE>'

【讨论】:

  • 尚未对此进行测试,因为我从事的项目早已结束并转而使用 django,但解决方案似乎合理,所以我继续确认......
【解决方案2】:

蒙哥:{ 适配器:'sails-mongo', 主机:'本地主机', 端口:27017, 用户:'',user: 'username', //optional 密码:'',password: 'password', //optional 数据库:'mle' },

用户名和密码是可选的,所以不需要提供,只需评论并运行它。它对我有用!

【讨论】:

    【解决方案3】:

    当我忘记更新到匹配的sails-mongo 包时,我遇到了各种sails 候选版本的问题。您可能会更新到最新版本,sails 0.10.5 和sails-mongo 0.10.4。它们一起工作。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,我无法连接到导入的数据库,即使我尝试创建许多具有不同角色的不同用户。

      所以我运行db.system.users.find(),我注意到一个用户,我还没有创建它。是这样的:

      { "_id" : ObjectId("546699985feb7553f2e4dc32"), "user" : "newuser", "pwd" : "aaacf6ead2f12cbeb1a155b3021a3cda", "roles" : [ "userAdminAnyDatabase" ] }
      

      所以我去了 connections.js 文件,在询问老程序员该用户的密码是什么后,更新了用户名和密码。

      然后运行sails lift,幸运的是它成功了!

      【讨论】:

        【解决方案5】:

        您的 bson 扩展程序未加载可能有问题。

        你的第一个错误:

        使用纯JS版本加载c++ bson扩展失败

        多个来源可能:bson 或 node-gyp 已卸载或数据库不存在。

        解决依赖关系提供的错误(请在每次使用解决方案时检查,如果有人成功,请停止阅读我):

        应用程序根目录中的第一个解决方案:

        npm install
        

        如果您在 OSX 上,第二个解决方案不起作用:

        xcode-select --install
        rm -rf node_modules // OR npm update
        npm cache clean // OR npm update
        npm install // OR npm update
        

        在 Ubuntu 上第二个解决方案:

        sudo apt-get install gcc make build-essential
        rm -rf node_modules // OR npm update
        npm cache clean // OR npm update
        npm install // OR npm update
        

        如果您认为 bson 在依赖关系下不存在,则第三个解决方案:

        npm install bson
        

        如果另一个不起作用,也许这个可以拯救你:

        npm install -g node-gyp 
        

        如果它不起作用,则在它之后:

        git clone https://github.com/mongodb/js-bson.git
        cd js-bson
        npm install
        node-gyp rebuild
        

        很抱歉这个 wtf 答案,但它可以帮助你或其他人。

        最好的问候

        【讨论】:

          【解决方案6】:

          你可以像这样连接到数据库。

          https://sailsjs.com/documentation/reference/configuration/sails-config-datastores

           // config/datastores.js
              module.exports.datastores = {
                default: {
                  adapter: require('sails-mysql'),
                  url: 'mysql://root:squ1ddy@localhost:3306/my_dev_db_name',
                }
              };
          

          【讨论】:

          • 关于您的回答的一些想法: 1. 有点晚了(6 年左右); 2.它指的是sails v1文档,而不是用于问题的v0.10; 3.它建议使用mysql,而问题是特定于mongodb的。话虽如此,感谢您的帮助。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-26
          • 1970-01-01
          • 1970-01-01
          • 2015-03-09
          • 2014-04-11
          • 2019-03-12
          • 2015-10-14
          相关资源
          最近更新 更多