javascript - 有没有什么方法可以在不迭代的情况下从对象数组中创建属性数组?
问题描述
抱歉标题不好 - 我不知道如何格式化它。我会解释我的问题。
所以我有这个req.user:
我想构建一个中间件,以便我可以检查用户是否有权访问该区域,方法是检查 req.user.privileges.region 中的任何代码是否与我在数据库中的代码匹配(1 用于管理员)。
middleware.access2 = function(req, res, next)
{
if(req.isAuthenticated())
{
User.findOne({'username': req.user.username, "privileges.region": {$in: [1, req.body.regiune]}}, function(err, usr)
{
if(err)
{
console.log("middleWare.access2 - " + err);
return res.redirect("/login");
}
else
{
if(usr !== null)
{
console.log(usr);
return next();
}
else
{
return res.redirect("/login");
}
}
})
}
}
有没有办法在没有迭代的情况下做到这一点?我可以使用用户拥有的区域(来自 req.user)构建一个数组并将其传递给查询。
我可以以某种方式访问privileges.region,这样我就不需要迭代还是应该使用上面的想法?
谢谢。
解决方案
你可以用lodash 我写的一个基本的例子,可以细化。
const _=require('lodash')
const user={
username:'marcu',
privileges:[
{
id:1,
region:10,
write:1,
edit:1
},
{
id:2,
region:15,
write:1,
edit:1
},
{
id:3,
region:20,
write:1,
edit:1
}
]
}
found=_.findKey(user.privileges,o=>o.region===15)
console.log(found);
对于o.region===15
,输出为 1,对于o.region===10
,输出为 0,对于o.region===20
,输出为 2,依此类推。findkey 返回包含该值的对象的索引。当值不存在时,结果未定义
推荐阅读
- mysql - 如何通过连接其他两个表中的重复项目编号来更新重复项目编号的唯一数据值?
- c# - 构建错误“找不到 CodedUITestAttribute”
- css - 在闪亮中自定义 selectInput 的背景颜色
- java - 尝试打印从 L 到 R 的子数组的期望值(均值)的下限
- rust - 当目标拱门是 WASM 时默认启用 Cargo 功能?
- swift - 选择一个单元格时,取消选择并更改集合视图中其他单元格的背景
- hapijs - JOI 电子邮件验证
- windows - 如何在 Windows 机器上引用用户根目录路径
- reactjs - 如果它是空的,如何从graphQL查询中删除变量?
- java - Spring将缓存添加到现有的CacheManager bean