mongodb atlas上的快速护照注册错误

Posted

技术标签:

【中文标题】mongodb atlas上的快速护照注册错误【英文标题】:express passport register error on mongodb atlas 【发布时间】:2018-08-06 07:38:16 【问题描述】:

我在运行护照注册功能时收到以下消息。我在连接字符串中使用了用户/密码,所以我不知道这个管理业务来自哪里。

Mongoose:accounts.findOne( '$or': [ username: 'test1' ] , fields: hash: 0, salt: 0 ) REGISTER err MongoError: cannot do raw queries on admin in atlas

连接命令

mongoose.set('debug', true)
mongoose.connect('mongodb+srv://user:password@cluster*-qns*s.mongodb.net/node-authdb', function(err, client) 
  assert.equal(null, err);
  console.log("Connected successfully to server");
);

注册码

router.post('/register', function(req, res) 
    Account.register(new Account( username : req.body.username ), req.body.password, function(err, account) 
        if (err) 
            console.log("REGISTER err " + err);
            return res.render('register',  account : account );
        

编辑

我使用 dbAdmin@node-authdb (Role) 创建了一个新用户 (newuser@admin),现在我拥有:

MongoError: user is not allowed to do action [find] on [admin.$cmd]

也许我需要使用特定的角色组合?

提前致谢

【问题讨论】:

【参考方案1】:

据我所知,我无法使用mongodb+srv 协议连接到 MongoDB Atlas,同时在与admin 不同的数据库中写入数据。 您处于免费层,因此您没有权限使用 admin 数据库上的某些功能,但即使您升级到付费层,您最终也会在 admin 数据库中写入。 所以,最后,我使用replicaSet 进行连接:

// Connect mongoose
const dbCredentials = !_.isEmpty(config.db.user) ? 
`$config.db.user:$config.db.pwd@` : '';
let mongooseOptions = 
     autoIndex: true,
;

if (isProduction) 
    mongooseOptions = _.extend(mongooseOptions, 
        ssl: true,
        authSource: 'admin',
        replicaSet: config.db.replicaSet,
    );


const uri = `$config.db.protocol://$dbCredentials$config.db.host/$config.db.name`;
mongoose.connect(uri, mongooseOptions, (err) => 
    if (err) 
        console.error('Could not connect to mongodb', err);
     else 
        console.log('Connected to mongo', config.db.name);
    
);

mongoose.set('debug', isDevelopment);
mongoose.Promise = global.Promise;

【讨论】:

以上是关于mongodb atlas上的快速护照注册错误的主要内容,如果未能解决你的问题,请参考以下文章

使用护照使用 NodeJs mongodb(mongoose) express 的注册表单

将 Elastic Beanstalk 上的 Web 服务器与 MongoDB Atlas 上的数据库服务器连接时出错

我无法将数据存储到 Postman 上的 MongoDB(Atlas)中(Node.js with express)

Sails.js 0.11 和护照:“缺少凭据”错误

连接到 MongoDB Atlas Cluster 错误

Node.js 和 MongoDB Atlas Mongoose 连接错误