我目前正在构建一个Nodejs,Express,Sequelize(与PostgreSQL)应用程序,并且在使用promises以及事务和循环时遇到了一些问题.
我试图弄清楚如何在事务中使用for循环.我试图循环遍历成员列表并在数据库中为每个成员创建一个新用户.
我知道以下代码是错误的,但它显示了我想要做的事情.
谁能指出我正确的方向?
var members = req.body.members;
models.sequelize.transaction(function (t) {
for (var i = 0; i < members.length; i++) {
return models.User.create({'firstname':members[i], 'email':members[i], 'pending':true}, {transaction: t}).then(function(user) {
return user.addInvitations([group], {transaction: t}).then(function(){}).catch(function(err){return next(err);});
})
};
}).then(function (result) {
console.log("YAY");
}).catch(function (err) {
console.log("NO!!!");
return next(err);
});
Run Code Online (Sandbox Code Playgroud) 问题:
在我正在构建的网站上,我有两个JQuery ajax长轮询调用不断挂起.我现在正尝试放入文件下载功能,这样当按下链接时,会提示用户使用SaveAs框.这个文件的下载工作正常,问题是当按下链接时,两个ajax调用被取消.
我正在尝试没有取消ajax调用或直接设置ajax调用的可能性.
以下是链接的代码:
HTML:
<a href="/test" id="testfile">Tasks</a>
Run Code Online (Sandbox Code Playgroud)
JS:
$(document).on('click',"#testfile",function(event){
event.preventDefault();
var href=$(this).attr('href');
window.location.href = href;
updater(); /* AJAX CALL #1 */
notifier(); /* AJAX CALL #2 */
});
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
我上面的代码我试图在开始下载后调用两个ajax调用.这不起作用.如果我放入一些延迟,以便在下载完成后启动呼叫,那么它可以工作,但看到文件可能很大,因此花费不明的时间来接收这当然是一个糟糕的解决方案.
我真的很困惑为什么ajax调用被取消了?这是因为当我按下链接时页面正在卸载吗?
看到我只在一个带有一个线程的开发服务器上运行,新的ajax调用我试图在跟随链接后立即设置可能会失败,因为服务器很忙,可能是这种情况吗?
解决了:
我在网站的底部添加了一个隐藏的iframe,并使用我的链接定位了.我还删除了JS代码,因为现在没有取消ajax调用.
代码现在看起来像这样:
HTML:
<a href="/test" target="filetargetframe" id="testfile">Tasks</a>
********
<iframe name="filetargetframe" style="display:none"></iframe>
Run Code Online (Sandbox Code Playgroud)