对于Jade中node.js中声明的变量,For循环在javascript中不起作用

For loops not working in Javasctipt for a declared variable from node.js in Jade

本文关键字:循环 For javascript 不起作用 node Jade js 声明 对于 变量      更新时间:2023-09-26

我正在学习与node.js和JADE一起工作,并且在JADE文件内的javascript中制作for循环工作有问题。我正试图用一个简单的代码来学习它。我正在传递一个数组从我的数据库到翡翠文件。当我直接调用数组的特定元素时(var x = !{lat[2]};alert(x),但是当我将它放入for循环中时,它就不起作用了。以下是我的app.js代码:

app.get('/test', function(req, res){
getlat(function(err, lat){
    if(err){
      return res.send(500);
    }console.log(lat);
    res.render('test', {lat:lat});
  });

,这是从数据库中检索数据的地方:

var mongoose = require ('mongoose');
  function getlat(callback){
  var lat = new Array();
  mongoose.model('stories').find({},function(err, companies) {
    if(err){
      return callback(err, lat);
    }
    for (var i = 0; i < companies.length; i++) {
      lat[i] = companies[i].Lat;
    }
    return callback(null, lat);
 });
}
module.exports = getlat;

这是我的jade文件:

body
   button.btn.btn-info Click Here! 
script.
  $('button').click( function() {
    for (var i = 0; i < 2; i++) {
      var x = !{lat[i]};
      alert(x);
    });
  });
如果有人告诉我哪里出错了,我将非常感激。由于

问题是lat只存在于服务器端,而i只存在于客户端。

尽管两者都使用JavaScript,但这两个环境仍然彼此分开管理,所有服务器端代码在客户端代码开始之前运行到完成。

解决这个问题的一个选项是将整个lat输出到视图中的客户端变量,使用JSON和JavaScript的共享语法,并在客户端迭代它。

script.
  $('button').click(function () {
    var lat = !{ JSON.stringify(lat) };
    for (var i = 0; i < 2; i++) {
      // ...
    }
  });