两周前,我开始学习http://wiki.pentaho.com/display/ServerDoc2x/Starting+BI+Server+as+a+windows+service上的课程,并举例说明如何将Meteor.isClient
方法与console.log
和Mongo一起使用。但它没有用。即使在重新启动后,我的Windows CLI也不会在输出中显示任何内容,如果我在浏览器控制台中尝试输入console.log(Images.find().count())
,则输出0。
Images = new Mongo.Collection("images");
if (Meteor.isServer){
Meteor.startUp(function(){
if(Images.find().count() == 0){
Images.insert({
img_src:'1.jpg',
img_alt:'Here i am !'
});
} //end of if have no images
});
}
console.log('startup : ' + Images.find().count());
答案 0 :(得分:2)
首先,您的console.log
不在您的Meteor.isServer
之内,所以在客户端显示它是很正常的。
其次,如果要在服务器中显示日志,则必须将其放在startUp
函数或您在客户端中调用的方法中。
答案 1 :(得分:0)
Meteor.isServer
在Windows中工作正常,但很长一段时间recommended而不是使用Meteor.isServer
和Meteor.isClient
,您应该将代码拆分为{{} 1}}和/client
目录。
对于新版本的meteor,当您运行/server
时,会创建以下内容:
meteor create testApp
中的所有代码仅在客户端上运行,/client
中的所有代码仅在服务器上运行。
创建/编辑这些初始文件以包含以下日志命令,显示其中(客户端/服务器)以及代码运行的顺序:
/server
/client/main.js
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import './main.html';
Template.hello.onCreated(function helloOnCreated() {
// counter starts at 0
this.counter = new ReactiveVar(0);
});
Template.hello.helpers({
counter() {
return Template.instance().counter.get();
},
});
Template.hello.events({
'click button'(event, instance) {
// increment the counter when button is clicked
instance.counter.set(instance.counter.get() + 1);
},
});
Meteor.startup(() => {
console.log('Ping! from /client/main.js - Meteor.startup()')
});
console.log('Ping! from /client/main.js - Top Level')
/server/main.js
import { Meteor } from 'meteor/meteor';
Meteor.startup(() => {
console.log('Ping! from /server/main.js - Meteor.startup()')
});
console.log('Ping! from /server/main.js - Top Level')
/shared.js
// Runs on Both
console.log('Hi from /shared.js - Top Level')
Meteor.startup(() => {
console.log('Hi from /shared.js - Meteor.startup()')
});
// Runs on Server
if(Meteor.isClient){
console.log('Hi from /shared.js - isClient')
Meteor.startup(() => {
console.log('Hi from /shared.js - isClient, Meteor.startup()')
});
}
// Runs on Server
if(Meteor.isServer){
console.log('Hi from /shared.js - isServer')
Meteor.startup(() => {
console.log('Hi from /shared.js - isServer, Meteor.startup()')
});
}
/lib/shared.js
在客户端和服务器上,不在console.log('Ping! from /lib/shared.js - Top Level')
Meteor.startup(() => {
console.log('Ping! from /lib/shared.js - Meteor.startup()')
});
块中的console.log
行首先运行,然后是Meteor.startup
回调,因为这些行被延迟直到服务器进程完成启动,或DOM准备好了。它们的执行顺序与Meteor.startup
的调用顺序相同。
不在Meteor.startup
块中的调用在Default file load order之后加载文件时执行。