javascript - 如何在 Node 模块和另一个 JavaScript 文件中声明数组 (Mongodb)

标签 javascript node.js mongodb express

我对 Node.js 和一般编程非常陌生。我正在尝试学习从 Mongodb 检索变量的值。我的 app.js 中有“data”变量

var data = require ("./public/assets/js/data.js");
app.get('/test', function(req, res) {
    res.locals.place = data;
    console.log(data);

    res.render('ViewMode');
});

我的 data.js 文件如下所示:

var mongoose = require ('mongoose');
var data = new Array();
mongoose.model('stories').find({},function(err, companies) {
    for (var i = 0; i < companies.length; i++) {
        data[i] = JSON.stringify(companies[i].place);
    }
});

module.exports = data;

我想在 JavaScript 文件中使用它来显示 map 。

var places = []
var places =  locals.place;

for (var i = 0; i < places.length; i++) {
    var mylocation = places[i];
    var lat = mylocation.replace(/^\"\(([0-9-.]*),.*/g, "$1");
    var lng = mylocation.replace(/.*,\s*([0-9-.]*)\)\"$/g, "$1");
    var latLng = new google.maps.LatLng(lat, lng);
    var marker = new google.maps.Marker({
        position: latLng,
        map: map,
    });    
}  

我尝试使用 re.locals.variable 但不确定这是否是正确的方法,或者我是否需要 ajax?

谢谢

最佳答案

将 Mongo 内容包装在 data.js 模块的函数中

var mongoose = require ('mongoose');

function getPlaces(callback){
  var data = new Array();
  // this function here is async, so use a callback to "return" the result
  mongoose.model('stories').find({},function(err, companies) {
    if(err){
      return callback(err, data);
    }
    for (var i = 0; i < companies.length; i++) {
      data[i] = JSON.stringify(companies[i].place);
    }
    return callback(null, data);
 });
}

// then export the function
module.exports = getPlaces;

然后在express中require该模块并向其传递一个函数

var placeFinder = require ("./public/assets/js/data.js");
app.get('/test', function(req, res){

  placeFinder(function(err, data){
    if(err){
      // Internal error!
      return res.send(500);
    }
    // your crazy code here to manipulate the data here

    res.locals.place = data;
    console.log(data);
    res.render('ViewMode');

  });
});

关于javascript - 如何在 Node 模块和另一个 JavaScript 文件中声明数组 (Mongodb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24144161/

相关文章:

node.js - 尝试使用 mongoose (NODE.JS) 在 mongoDB 上发布

Javascript 将数组作为参数传递给具有多个参数的函数

node.js - 如何防止我的 Node js 代码被盗?

javascript - 在 JavaScript 中缩短 MongoDB ID

javascript - NodeJS 尝试使用 fs.createfilestream 内部的 URL

javascript - 在 Node 中将 javascript 范围与expressjs 一起使用的正确方法

swift - 在 ubuntu 上使用 MongoSwift 时 Vapor 崩溃

javascript - 如何获取 javascript 对象属性的子集

javascript - 新手问题: connect two functions int two files

javascript - 向 Yii 菜单项添加确认