我正在使用Node.JS迈出第一步,遇到了一个奇怪的问题我无法弄清楚。我有observeEvent(input$time_span, {
points_df <- ddply(filter_df(), c("lat", "lon"), summarise, count = length(timestamp))
cat(nrow(points_df))
leafletProxy("map", data = points_df) %>% clearShapes() %>% addCircles()
})
这个events
文件的对象来自我正在导出的文件:
upcoming_events.js
并且在接收方,文件'routes.js'我能够访问数据 像这样:
module.exports = function(passport, FacebookStrategy, config, mongoose) {
var fbEvent = new mongoose.Schema({
eventID: String,
eventName: String,
eventPic: String,
rsvp_list: Array,
category: String
})
var eventModel = mongoose.model('fbEvent', fbEvent);
eventModel.find({}, function(err, events) {
if (err) throw err;
module.exports.events = events;
})
}
我会看到这样的日志:
var events = require('../data/upcoming_events.js');
router.get('/upcoming_events', securePages, function(req, res, next){
console.log(events.events[0].eventName);//accessing data....
res.render('upcoming_events', {title: 'Welcome to aDating - Upcoming Events'});
})
到目前为止一切正常但现在我想将此数据传递到另一个文件{ _id: 55aa582edeea927016d5af1c,
eventID: '1111',
eventName: 'Breakfast Club',
eventPic: '4d669b',
category: 'Party',
__v: 0,
rsvp_list:
[ '12343242'
] }
,然后将其发送到'proccess_data.js'
。 proccess看起来像这样(没有演示功能):
routes.js
但现在当我需要var events = require('../data/upcoming_events.js');
module.exports.user = events;
文件中的数据并尝试以相同的方式访问它时:
proccess_data.js
我在控制台中收到以下错误:
var data= require('../data/proccess_data.js');
router.get('/upcoming_events', securePages, function(req, res, next){
console.log(data.events[0].eventName);//accessing data....
res.render('upcoming_events', {title: 'Welcome to aDating - Upcoming Events'});
})
当我从TypeError: Cannot read property '0' of undefined
导出events
时,还有一个细节:
proccess_data.js
并在routes.js中像这样访问它:
module.exports = function(passport, FacebookStrategy, config, mongoose) {
var events = require('../data/upcoming_events.js');
module.exports.user = events;
}
打印出来的是:
console.log(data.user);
任何想法为什么这样?
答案 0 :(得分:0)
1)从upcoming_events.js
导出 - 是功能;
2)在模块proccess_data.js
中 - 您将其导出为user
函数;
3)在routes.js中,它将作为键user
正在运行的对象。
所以,试试data.user()[0].eventName
。
答案 1 :(得分:0)
你有点奇怪地使用NodeJS环境。
首先,您应该使用module.exports
导出JS文件的主类。你肯定不会(也不能)在运行时(除了立即调用的函数表达式之外的任何东西)中使用它,即。
eventModel.find({}, function(err, events) {
if (err) throw err;
module.exports.events = events;
})
其次,您的文件所需的所有模块应该是require
d在JS文件的顶部,而且不是在运行时类型中:即。
module.exports = function(passport, FacebookStrategy, config, mongoose) {
var events = require('../data/upcoming_events.js');
module.exports.user = events;
}
第二项比第一项有更多的警告,但这是一个很好的做法。