我在我的nodejs上使用mongodb和mysql。
employee.find({status:1}, function(error,response) {
for(i=0;i<=response.length;i++){
var fileid = response[i]._id;
var sql = "SELECT * FROM EMPLOYEE WHERE `id` = '"+fileid+"'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Result: " + result);
});
}
})
上面的代码给了我确切的记录和结果,但在我的记录器文件中,我每次都得到以下错误,但我得到我的输出没有问题。我使用winston记录我的服务日志。我担心这个错误的主要原因是我的节点js APi在每8小时后或多或少地下降并且我的数据库不会空闲(永远使用npm模块来运行我的服务)所以我我相信这可能是杀死我的节点进程的原因。以下是我的错误。有任何帮助吗?
"stack":["TypeError: Cannot read property '_id' of undefined"(var fileid = response[i]._id;)]
答案 0 :(得分:2)
因为i
应该小于response.length
。数组长度始终大于最后一个索引。
例如,
var arr = [1,2]; //length is 2 and last index value is 1
更改代码如下:for(i=0;i<response.length;i++)
employee.find({status:1}, function(error,response) {
for(i=0;i<response.length;i++){
var fileid = response[i]._id;
var sql = "SELECT * FROM EMPLOYEE WHERE `id` = '"+fileid+"'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Result: " + result);
});
}
})