我有一个用户数据库:配置文件,产品,配置以及用户可以拥有的其他内容。我试图找出一种方法来成功链接我的redis调用(一个“
getAll”函数),以便我可以使用所有这些东西返回一个对象,例如:
user = {
profile: {},
products: {},
config: {},
...
}
这是我访问它们的方式/我想做的事情:
User.getAll = function(uid, next){
var user = {};
var multi = client.multi();
var key = 'user' + uid;
client.hgetall(key, function(err, profile){
user.profile = profile;
//signal that profile is ready
}
key = 'products:' + uid;
client.smembers(key, function(err, arr){
key = key + ':';
for (i=0; i < arr.length; i++){
multi.hgetall(key + arr[i]);
}
multi.exec(function(err, products){
user.products = products;
//signal that products is ready
}));
})
if (ready) { //obviously this isn't correct.
return next(null, user);
}
}
收到所需的所有数据后,如何恢复?事件发射器是正确的方法吗?
我认为事件发射器在这里不是一个好选择。您可以跟踪所有呼叫,如下所示:
User.getAll = function(uid, next){
var requests = ["first", "second"];
var check_request = function(_key) {
var idx = requests.indexOf(_key);
if (idx!==-1) {
requests.splice(idx, 1);
}
if (!requests.length) {
next(user);
}
};
// ORIGINAL CODE + check_request
var user = {};
var multi = client.multi();
var key = 'user' + uid;
client.hgetall(key, function(err, profile){
user.profile = profile;
check_request("first");
}
key = 'products:' + uid;
client.smembers(key, function(err, arr){
key = key + ':';
for (i=0; i < arr.length; i++){
multi.hgetall(key + arr[i])
}
multi.exec(function(err, products){
user.products = products;
check_request("second");
}));
})
}
显然,您将使用比然后更有意义的方法requests = ["first", "second"];
,但我希望您有所想法。
还可以看看async.js。这是一个不错的库,可以为您简化此操作,并且可以做更多的事情。
下面的问题-我必须多次调用ajax函数,当所有函数完成后,将所有结果放入数组。我想到了这个: 在这里小提琴:http://jsfiddle.net/Fkd9n/ 一切似乎都很正常,“console.log(data)”用响应文本写出对象,但“console.log(val.name)”总是“未定义”。那么,一旦所有调用完成,如何将所有结果合并到一个数组中呢? 谢谢你!
问题内容: 我没有特定的代码问题,但我不确定如何使用Scrapy框架从逻辑上解决以下问题: 我要抓取的数据结构通常是每个项目的表格行。简单明了吧? 最终,我想为每一行抓取Title,Due Date和Details。 标题和截止日期立即在页面上显示… 但是Details本身不在表格中,而是指向包含详细信息的页面的链接(如果没有意义,请使用表格): 即使在阅读了Scrapy文档的CrawlSpide
我正在使用openLDAP服务器对我的夸克应用程序上的用户进行身份验证。一切正常,但我想检索我的用户数据。 我以为它会出现在方法身份中。getAttributes()但这给了我一个空映射。 以下是一个用户示例: 这也是我的ldap配置: 如何获取我的用户邮件和CN? 非常感谢您的帮助, 托马斯
问题内容: 假设我要执行以下命令: 为了避免NullPointerException,如果发生以下情况,我将必须执行以下操作: 有没有一种方法或已经存在的Utils类可以更优雅地做到这一点,让我们说以下类似的东西? 问题答案: 最好的方法是 避免 连锁。如果您不熟悉Demeter法则(LoD),我认为应该这样做。您已经给出了一个完美的消息链示例,该消息链与没有业务知识的类过于亲密。 得墨meter
问题内容: 我有一个标准的javascript ajax调用,其中将data:设置为json数据。 我试图在php中获取数据,这是行不通的。 但是,可行。 我想知道这可能是我的框架或诸如此类的无法正常工作的东西吗?还是还有其他我可以用来获取数据的东西? 编辑: 因此,框架YII和扩展Restfullyii具有使用一种方法获取其数据的方法return json_decode(file_get_con
我正在运行一个Cordova应用程序,它连接到一个承载在Azure上的Web API。我已经使用Azure AD承载身份验证保护了API。当用户试图调用其中一个endpoint时,他会被转发到Azure广告登录页面,输入他的凭据,然后得到令牌。该令牌将添加到API的所有后续请求中。我正在使用mobile apps客户端SDK(cordova-plugin-ms-azure-mobile-apps)