2014-10-03 85 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。