我对 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/