Tag: meteor

Meteor.js中的UI.dynamic模板的助手

在Meteor v0.8.2中,似乎必须为dynamic模板调用的各个模板( Template.story_en , Template.story_ne )创build助手。 是否可以为dynamic模板( Template.story )创build助手,并避免为dynamic模板可以使用的所有可能的模板重复使用,如下面的示例中所示? 看来,我正在使用的方法需要大量重复的代码。 story.html <template name="story"> {{> UI.dynamic template=storyTemplate}} </template> story.js Template.story.storyTemplate = function() { return "story_" + Session.get('lang') } // This does not work Template.story.color = function() { return '#f00' } // This works Template.story_en.color = function() { return '#f00' } // This works (but seems to […]

通过iosocket发送数据给meteor,但不是来自Meteor客户端(搭载Meteor的io-socket)

我想通过第三方域的一小部分Javascript将一些数据发送到Meteor服务器。 我想发送很多小的东西,所以我想用一个io-socket。 我可以想象一下这样做的几种方法: 连接到meteor的socket-io和“搭载”它。 发送自定义事件(名称空间,以避免碰撞),并以某种方式捕获这些在服务器端。 但是我找不到在服务器上连接的套接字对象! 连接到meteor的socket-io,假装成meteor客户端。 使用服务器端的标准meteor函数捕获消息。 有没有很多协议可以像meteor客户一样谈话? 在服务器上打开第二个IO套接字侦听器,并让客户端附加到该服务器上。 为此,我需要find“ 应用程序 ”对象。 运行一个完全独立的节点进程,并让客户与之交谈; 它可以保存在Meteor使用的MongoDB中。 我可以做到这一点,但我喜欢把所有东西放在一个过程中。 另外,我不确定是否会触发Meteor的更新事件。 我真的很喜欢#1的帮助: 我在哪里可以find服务器上的iosocket对象? 否则,#2是可行的吗? 我怎么能像meteor客户那样谈话?

MongoDB:如何在更新之前sorting查询

我正在编写一个在后端使用MongoDB的Meteor(Node.js)应用程序。 在我的代码中的某个时刻,我需要更新集合中的特定文档。 我需要使用Mongo的update()方法,但是在传递适当的(复杂)查询时遇到了问题,无法将其缩小到特定的文档。 我试图更新的文件是: db.collection.find({market: 'AAA'}).sort({creationDate:-1}).limit(1) 换言之, collection中具有AAA市场且最近创build的文档(creationDate是UNIX时间戳编号,例如1408829429914 )。 有多个AAA市场的文档,所以我使用sort()和limit(1)来查找最近创build的文档。 在更新过程之前,Mongo的update()似乎不接受sorting参数作为查询的一部分。 我能做些什么来缩小这个文件并更新它? 谢谢!

如何在服务器上使用npm时使方法成为被动的

我需要将目录中的文件列表传送给Meteor中的客户端。 到目前为止,我有这样的: if (Meteor.isClient) { Meteor.call('getFiles', function(error, result) { if (error) { throwError(error.reason); } else { console.log(result); } }); } if (Meteor.isServer) { Meteor.methods({ 'getFiles': function getFiles() { var walk = Meteor.npmRequire('walk'); var files = new Array(); var walker = walk.walk('/test', { followLinks: false }); walker.on('file', function(root, stat, next) { files.push(root + '/' + stat.name); […]

meteor0.9.1.1 – 从json端点填充到服务器端集合

我正在编写一个包作为我正在处理的一个小应用程序的一部分,我需要做的一件事是从端点获取json数据并将其填充到服务器端集合。 我一直在收到错误消息告诉我,我需要把服务器端收集更新function放入光纤,Meteor.bindEnvironment或Meteor._callAsync。 我感到困惑,因为没有清楚简明的解释告诉我这些事情到底是什么,他们是什么,他们何时何时被弃用,或者他们的使用是否是好的做法。 这里是看看我的包文件中的重要内容 api.addFiles([ '_src/collections.js' ], 'server'); 有点伪码: 1)设置Mongo.Collection项目列表 2)使用我写的名为httpFetch()的函数填充这些函数,并为每个集合运行这个函数,如果提取成功,则返回已解决的promise。 3)在每个()循环的下划线中调用这个httpFetch函数,遍历每个集合,获取json数据,并尝试将其插入服务器端的MongoDB。 Collections.js看起来像下面的内容。 在光纤中包装插入function似乎压制错误消息,但是没有数据被插入到数据库中。 /** *服务器端组件向远程*端点发出请求以填充服务器端的Mongo集合。 * * @class Server * @static * / Server = { Fiber: Npm.require('fibers'), /** * Collections to be populated with content * * @property Collections * @type {Object} */ Collections: { staticContent: new Mongo.Collection('staticContent'), pages: new Mongo.Collection('pages'), projects: new […]

什么是meteor的线性执行模型?

在meteor文件中 ,它指出: 在Meteor中,您的服务器代码在每个请求中运行在单个线程中,而不是以Node的典型asynchronouscallback方式运行。 我们发现线性执行模型更适合Meteor应用程序中典型的服务器代码。 与Node相比,这个线性执行模型是什么?

未加载库:/usr/lib/libc++.1.dylib OSX

我试图在我的机器上运行一个Meteor.js应用程序 ,并得到这个错误,我想我的意思是我需要得到libc ++。1.dylib ,但我不知道是否有其他东西我缺less(libc ++安装是一个痛苦) : While loading plugin `fourseven:scss` from package `fourseven:scss`: module.js:356:32: dlopen(/Users/m/.meteor/packages/fourseven_scss/.1.0.0.wp4tvk++os.linux.x86_64+os.osx.x86_64+web.browser+web.cordova/plugin.fourseven:scss.os.osx.x86_64/npm/fourseven:scss/node_modules/node-sass/bin/darwin-x64-v8-3.14/binding.node, 1): Library not loaded: /usr/lib/libc++.1.dylib Referenced from: /Users/m/.meteor/packages/fourseven_scss/.1.0.0.wp4tvk++os.linux.x86_64+os.osx.x86_64+web.browser+web.cordova/plugin.fourseven:scss.os.osx.x86_64/npm/fourseven:scss/node_modules/node-sass/bin/darwin-x64-v8-3.14/binding.node Reason: image not found 完整的错误: http : //pastebin.com/y452BeDj 这只是我需要的依赖,还是可能有其他更简单的方法? 谢谢

基本meteorasynchronous概念:提交电子邮件和发送电子邮件

对于meteor框架来说,我真的很陌生,并且在传统的响应和请求背景(以NodeJSasynchronouscallback方式)到Meteor方面有一些难以理解的概念。 我只是想build立一个登陆页面,告诉我你的名字和电子邮件地址。 用户点击提交之后,我想将用户保存在数据库(MongoDB)中,并向Mandrill端点发送请求,以便Mandrill可以发送电子邮件到特定的电子邮件地址。 我在传统回应和要求中的做法就是这样。 用户提交他们的姓名和电子邮件地址,这将是一个POST请求到我的服务器,并在我的服务器上,我的ORM将它保存到数据库,callback成功后,我打了一个请求,以Mandrill发送电子邮件这个特定的用户。 我现在在Meteor的代码如下: Template.welcome.events({ 'submit form': function(e) { e.preventDefault(); var subscribe = { name: $(e.target).find('[name="name"]').val(), email: $(e.target).find('[name="email"]').val() }; var errors = validateSubscribes(subscribe); if (Object.keys(errors).length > 0) { for (var type in errors) { toast(errors[type], 2000); } return; } Subscribes.insert(subscribe, function(error, result) { if (error) return toast("Oops, something is wrong, try again"); if […]

如何用Node.js保存图像(以base64编码的stringforms传入)

我在我的Meteor应用程序上创build了一个带有Phantom.js的HTML5canvas,我试图将canvas图像保存在磁盘上。 问题:保存的图像文件似乎已损坏(无法在图像查看器中打开)。 我从HTML5的Canvas.toDataUrl方法得到了一个base64编码的PNG图像。 这是我从Canvas.toDataUrl()函数保存的输出如下所示:WzMyLDMyLDU4LDQ3LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NywxMTksMTAxLDk4LDExMiw5NywxMDMsMTAxLDQ2LDEwNiwxMTUsNTgsNTAsNTYsNDksMTBd 这是我的保存程序: var buffer = new Buffer(JSON.stringify(CanvasString)).toString('base64'); var fs = Meteor.npmRequire("fs"); var fullFileName = fileName + '.png'; fs.writeFileSync(fullFileName, buffer, "binary"); 我可以使用文本编辑器(如上面的输出)将保存的图像作为明文进行查看。

MeteorJS:Meteor.call中的错误

我在客户端有这个代码 Template['product'].events 'click .addcart': (event, template) -> event.preventDefault() add_this = {"item": 1, "name": "test", "qty": 5, "price": 124} Meteor.call "Carts.push", add_this return 并在服务器 Meteor.methods 'Carts.push': (params) -> console.log params 每次点击button添加购物车我在服务器端出现错误 调用方法“Carts.push”时出现exception错误:在调用“Carts.push”期间未检查()所有参数 任何想法为什么这个错误持续?