У меня возникли проблемы с пониманием того, как использовать Node ACL с модулем mongoose. Я могу заставить его работать нормально, пока все в одном файле. Однако как мне получить доступ к экземпляру acl в других модулях, если я хотел разбить маршруты на отдельные файлы?Как получить доступ к узлу acl через несколько модулей?
Я могу получить acl, работая со следующим кодом просто отлично. Он инициализирует, создает коллекции в базе данных и добавляет разрешения для пользователя.
// App.js
const mongoose = require('mongoose');
const node_acl = require('acl');
const User = require('./models/User');
mongoose.connect(/* connection string */);
acl = new node_acl(new node_acl.mongodbBackend(mongoose.connection.db, '_acl'));
acl.allow([
{
roles: ['guest'],
allows: [{ resources: 'login', permissions: 'get' }],
},
{
roles: ['admin'],
allows: [{ resources: '/users', permissions: '*' }]
}
]);
var user = User.findOne({username: 'coffee'}, (err, user) => {
console.error(user.id);
acl.addUserRoles(user.id, 'admin');
});
Я не могу понять, как правильно получить доступ к экземпляру acl в другом модуле, подобном этому.
// routes/foo.js
const acl = require('acl');
const router = require('express').Router();
// initialize acl ?
router.route('/', acl.middleware(/* rules */), (req, res) => {
// route logic
});
module.exports = router;
0 0 Код ошибки: TypeError: acl.middleware is not a function
.
Нужно ли создать новый экземпляр acl, используя соединение с базой данных в каждом модуле маршрута? Если да, то какой лучший способ снова получить соединение с Mongoose? Если нет, или есть способ передать его каждому маршруту?
Спасибо!
спасибо! Это имеет больший смысл. – JeremyC