superpack
是一个使用_wrapAsync
扭曲的npm包。为什么在集合UserSession
中插入会导致错误,说明未定义集合?
服务器/helpers/b.js
// Init
var SUPERPACK = Meteor.require('superpack');
var superpack = SUPERPACK(a,b);
// Get Info
superpack.getInfoSync = Meteor._wrapAsync(superpack.getInfo.bind(superpack));
var data = superpack.getInfoSync();
UserSession.insert({
'account': data
});
collections/UserSession.js
UserSession = new Meteor.Collection('user_sessions');
错误(服务器端):
ReferenceError: UserSession is not defined
使用仪表v0.6.6.3
您必须小心文件加载顺序。深度嵌套的文件首先加载(请参阅流星文档中的构建应用程序)。
因此,您的助手在集合js之前加载。通常情况下,这是可以的,但当Meteor启动时(即,当尚未加载所有文件时),看起来就像是在插入文档。
我认为你可能必须把你的任务放在一个Meteor.startup(function() {..})
中,它在流星启动时运行,唯一的区别是它在加载了所有文件后才运行。