MongoDB内存中的Db支持身份验证吗?
我用的是芒果的例子。为wiredTiger和in-memory DB创建管理用户。在与wiredTiger连接时,它会被连接,但不会与in-memory DB连接。
发布于 2022-08-31 22:20:33
这就是对我有用的东西:
"mongodb-memory-server": "^8.9.0","jest": "^27.2.5","@nestjs/mongoose": "^9.0.3",import { MongoMemoryServer } from 'mongodb-memory-server';
let mongo: MongoMemoryServer;
//..
mongo = await MongoMemoryServer.create({
// Not recommended as every instance will spawn on a random port.
// instance: { port: 27017 },
binary: { version: '4.0.28' },
auth: {
// Add the root user
customRootName: 'root-username',
customRootPwd: 'root-password',
// Add additional users
extraUsers: [
{
createUser: 'other-username',
pwd: 'other-password',
roles: [
{ role: 'readWrite', db: 'db-name' },
]
}
]
}
});
// Get the URI including random port
const mongoUri = await mongo.getUri();
//.. connect连接时,请确保指定身份验证凭据,包括:
username,password,database (db-name授予readWrite给)有用的Jest选项
"test": "jest --maxWorkers=4 --force-exit --detectOpenHandles",
"test:mongo:debug": "MONGOMS_DEBUG=1 jest --maxWorkers=4 --force-exit --detectOpenHandles",MONGOMS_DEBUG=1为内存数据库启用调试模式。对于弄清楚到底发生了什么非常有用。--force-exit是在测试运行后终止进程的最后手段,但是考虑一下mongoose.disconnect()和await mongo.stop();。有用的参考资料:
综合试验码头工人
version: "3.7"
services:
db-mongo-service-test:
image: mongo:4.0.28 # Build from MongoDB image
container_name: db-mongo-test # Name the container
environment:
MONGO_INITDB_DATABASE: db-name # Set Database Name
MONGO_INITDB_ROOT_USERNAME: root-username # Set root username
MONGO_INITDB_ROOT_PASSWORD: "root-password" # Set root user password
volumes: # Add a non-root user via init script.
- ./server/scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
ports:
- 27020:27020
- 27017:27017https://stackoverflow.com/questions/55628784
复制相似问题