- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 NodeJS 创建了一个服务器。 MySQL中有一个数据库,里面有近5000个用户。我必须读取 mysql 数据库并更新并在 MongoDB 数据库中创建日志。我为此实现了一个代码。 https://gist.github.com/chanakaDe/aa9d6a511070c3c78ba3ebc018306ad8
问题就在这里。在此代码的第 50 行中,我添加了该值。
userArray[i].ID]
这是来自 for 循环的用户 ID,我需要使用该 ID 更新 mysql 表。 for 循环 block 中的所有这些代码。但我收到此错误。
TypeError: Cannot read property 'ID' of undefined
因此我将这些值分配给顶部的变量。请参阅第 38 行和第 39 行。
var selectedUserID = userArray[i].ID;
var selectedUserTelephone = userArray[i].telephone;
当我这样使用时,没有错误。但用户 ID 没有更新。最近 2 个值具有相同的用户 ID。
这个问题的解决方案是什么?
最佳答案
这是一个常见的 JavaScript 问题,与异步操作期间变量的范围和提升的概念相关。
var a = 0;
function doThingWithA () {
console.log(a)
}
for (var i=0; i<1000; i++) {
a++;
setTimeout(function () {
doThingWithA();
}, 10);
}
在此示例中,“a”将始终以 1000 的值进行记录。其原因是 setTimeout(模仿慢速数据库操作)需要时间,并且在此期间(在日志发生之前)“a”增加为 1000,因为 for 循环不等待 setTimeout 完成。
最好的解决方案是使用“异步”模块。
pool.getConnection(function (err, connection) {
connection.query(query, function (err, users) {
async.eachSeries(users, function (user, next) {
async.parallel([
function updateUserStatus (cb) { /* your current code */ },
function updateUserAccount (cb) { /* current code for this */ }
], next);
}, function (err) { console.log('finished for all users!') })
});
});
您还可以使用 promise 。这是 Node.js 中典型的异步问题。通过阅读您的代码,您似乎认为每个操作都是串行运行的,而在 Node 中,每个输入/输出(例如数据库调用)都会被触发,但您的代码继续运行,如上面的 for 循环示例所示。
关于javascript - 如何在node js服务器的for循环中管理近5000条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41348948/
好吧,假设我有一堆光盘放在已知固定位置的飞机上。每个圆盘的半径为 1 个单位。该平面完全被一组圆盘覆盖,事实上,它被一组圆盘广泛覆盖,在某些区域覆盖了一两个数量级。我想找到仍然完全覆盖飞机的光盘子集。
我有一个涉及大量相关表的系统。考虑一个标准的类别/产品/订单/客户/订单项目场景。有些表是自引用的(如类别)。这些表都不是特别大(大约 10 万行,估计规模约为 100 万行)。我需要考虑这些数据的很
我正在学习 https://near.academy/near101/chapter-6 中的教程 其中一个步骤是运行此命令(但使用我的帐户): near call museum.testnet ad
我正在启动一个分析项目,该项目将处理数百万地理定位数据。数据可能是这样的: 编号{ 用户身份, 长, 纬度, 时间, 应用ID } 我的主要操作: 获取区域中包含的所有数据 找到属于某个userId的
在性能方面,JSON 解析需要大量时间来检索数据。在我的应用程序中,我需要从服务器获取近 10,000 条记录。在模拟器上,它立即获取数据并高效工作。但在我的 android 手机中,它需要超过2 分
任何人都可以帮助我从投影矩阵 44 获得左、右、下、上、近和远边界值吗? 最佳答案 这里是方程组的分辨率 Christian Rau引用: 对于正交矩阵: near = (1+m34)/m33;
我正在通过后台线程将 1,00,000 条记录插入到数据库中。此时,当我想要加载 Ui 屏幕时,出现内存不足错误。例如,当堆大小为 5 MB 且分配给后台线程的内存为 4 MB 时,加载 UI 屏幕需
C++如何存储近100000位的海量数字?.. 我试过使用 long long int 和 long double int..对我没有任何作用.. 有没有其他方法可以存储这么大的数字? 我希望找到大于
我是一名优秀的程序员,十分优秀!