【发布时间】:2014-04-06 01:23:38
【问题描述】:
我在我的项目中使用sails。其中我有两个模型,用户和权限。
user
{
c_name: 'string',
e_name: 'string'
}
permission
user: {
type: 'string',
required: true,
unique: true
},
permissions: {
type: 'array'
}
我想使用user.id 找到所有具有相应权限的用户。但是,由于我使用的是 mongodb,而不是关系数据库,因此我无法使用 SQL 进行联接。因此,这是我考虑的步骤:
- 获取所有用户
- 遍历用户
- 为每个用户找到他们的权限
- 为用户添加权限
- 输出用户数组。
以下是我的实现方法。
我正在使用node.async 来排队我的电话。
UserController.js
var async = require('async'); // using node.async
module.exports = {
find: function (req, res){
async.auto({
getUsers: function(callback){
User.find().done(function(err, users){
callback(err, users);
});
},
getPermission: ['getUsers', function(callback, users){
async.each(users.getUsers, function (user, cb){
Permission.findOne({'user': user.id}).done(function (err, permission){
if (permission)
user.permissions = permission.permissions;
cb();
});
}, function(err){
callback(users);
});
}]
}, function(err, results) {
// console.log(results);
res.send(results.getUsers);
});
}
}
谁能推荐一个更好的解决方案?谢谢!
【问题讨论】:
标签: node.js mongodb join asynchronous sails.js