2014-10-03 87 views
2

发送的正则表达式服务器端在我的申请,我建立一个查询对象的一些东西像下面如何在流星

Object {pointType: /analog/i, _id: Object} 

我试图把它保存在session变量,

Session.set("currentPointsQueryObject",queryObj); 

然后在单击事件我得到这个对象

var res= Session.get("currentPointsQueryObject"); 
    console.log(res); 

但在这里我得到像下面

Object {pointType: Object, _id: Object} 

同时,我也从会话变量歌厅它像

var group_id=Session.get("currentGroupId"); 

这是工作的罚款发送GROUP_ID服务器 (它在服务器日志显示ID)

然后,我已经尝试将其存储在全局变量中,如预期返回

像下面的点击事件

Object {pointType: /analog/i, _id: Object} 

但是当我把它发给服务器侧方法(后的console.log立即线())

Meteor.call("updateGroupPoints",res,function(err,data){ 
     console.log("updated points"); 
     console.log(data); 
    }); 

当我在服务器控制台登录res,它显示

{ pointType: {}, _id: { '$nin': [] } } 

Althoug我在pointType中有一些东西,它没有传递给服务器。

任何人都有想法,这是关系到存储的事情吗?

回答

3

你不能直接序列化正则表达式来EJSON,但您可以:

var regexp = /^[0-9]+$/; 
var serialized = regexp.source; 

发送serialized然后反序列化:

new RegExp(serialized) 

看看:Meteor: Save RegExp Object to Session

+0

Thx的帮助,它的工作 – user1934044 2014-10-03 12:19:15

1

/analog/i是一个正则表达式,对吧?存储在Session中的值和发送到方法的值必须是EJSON值的一部分。正则表达式不是。

+0

是的,没错。你知道任何方式发送正则表达式到服务器端吗? – user1934044 2014-10-03 07:56:56

+0

thx帮助 – user1934044 2014-10-03 12:19:57

+0

不提供答案如何正确地做到这一点 – avalanche1 2017-04-11 10:38:41

0

只需将您的RegExp通过.toString()串联起来,发送到服务器,然后将其解析回RegExp。