我正在尝试重构一些代码。在整个代码库中,我有代码存储与用户相关的信息:
this.users[user][field] = data ;
请注意,可能存在任意数量的子字段(包括无),如下所示:
this.users[user][field][subfield1][subfield2] = data ;
这些信息的检索结果如下:
var result = this.users[user][field] ;
在生产中,实际数据将存储到Redis中。
为了做好准备,我想将这些访问重构为两个函数,比如function storeUserData(user, fields, data)
和function retrieveUserData(user, field)
。
如果只有一个字段,我可以做到这一点。但是,如何编写这两个函数以允许任意数量的子字段(理想情况下也没有)?
编辑:长期目标是模糊redis密钥和node.js数组之间的差异。
这样我就可以访问一个节点子字段,如下所示:'users.user.id'
并且还可以像这样使用redis:users.user.*.id
。这似乎可行吗?
答案 0 :(得分:0)
您可以将fields参数作为Array传递。然后在你的阅读功能中执行类似
的操作function retrieveUserData(user,fields){
//想象字段是['field','subfield1']
var fieldVariable = this.users [user] for(f = 0; f< fields.length; ++ f){ fieldVariable = fieldVariable [fields [f]]; }
//在这一行中fieldVariable将指向this.users [user] ['field'] ['subfield1']
return fieldVariable; }
希望它有所帮助!