MongoDB NodeJS> db.createRole不是函数

时间:2018-10-14 15:09:05

标签: node.js mongodb

我正在使用“ Node.js MongoDB驱动程序API”,希望将数据库初始化脚本转换为NodeJS。

我无法find any admin commands(例如db.createRole()db.grantPrivilegesToRole())。这些功能是否存在于其他地方?还是我可以使用其他替代解决方法? (例如runCommand

这是完整的代码段。

db_test.js

const MongoClient = require('mongodb').MongoClient

MongoClient.connect('mongodb://admin:password@localhost:27017/admin')
  .then(client => client.db('admin').admin())
  .then(db => {
    return db.createRole({
      role: 'SOME_ROLE',
      privileges: [],
      roles: []
    })
  })
  .then(() => {
    console.log('Success!')
    process.exit(0)
  })
  .catch(err => {
    console.log('Error! - ' + err.message)
    process.exit(99)
  })

输出:

  

错误! -db.createRole不是函数

NodeJS库: "mongodb": "3.1.4"

Docker服务器: image: mongo:3.4.2

免责声明:我也在GoogleGroups中问过这个问题。

2 个答案:

答案 0 :(得分:1)

db.createRole不是函数。尝试这样做:

db.command( { createRole: 'SOME_ROLE', privileges: [], roles: [] } )

参考文献:

答案 1 :(得分:0)

您遇到了错误,因为未在此行中定义db:.then(dbAdmin => db.createRole(...))

尝试这样:

MongoClient.connect('mongodb://admin:password@localhost:27017/admin',(err,db) =>{

    if (err) return console.log(err);

    db.createRole(...)

});