从mongodb获取值的正确方法是什么?

时间:2017-09-11 04:46:05

标签: node.js mongodb

我在我的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;)]

1 个答案:

答案 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);
                        });
                      }
                    })