Meteor EJSON支持构造函数
我想通过以下方法通过Meteor EJSON支持构造函数,json,meteor,ddp,Json,Meteor,Ddp,我想通过以下方法通过EJSON发送构造器: server.js Meteor.methods({ “testConstructor”(文档){ console.log(doc)/{} } }) client.js Meteor.call({type:String}) 我想通过EJSON.addType添加类型,但它目前只支持实例,不支持构造函数。我尝试将字符串构造函数封装在一个类中,如下所示: 流星启动(函数(){ 类StrWrap{ 构造函数(val){ this.val=val } to
EJSON
发送构造器:
server.js
Meteor.methods({
“testConstructor”(文档){
console.log(doc)/{}
}
})
client.js
Meteor.call({type:String})
我想通过EJSON.addType
添加类型,但它目前只支持实例,不支持构造函数。我尝试将字符串构造函数封装在一个类中,如下所示:
流星启动(函数(){
类StrWrap{
构造函数(val){
this.val=val
}
toJSONValue(){
返回{
值:this.val
}
}
类型名(){
返回字符串.name
}
}
addType(字符串,函数(json){
返回字符串
})
const str=EJSON.stringify({type:String})
console.log(str)/{}
})
还是没有机会。在一篇文章中提到,EJSON支持String
,Number
等,但我认为这是针对这些类的实例
目前,我使用本机
JSON
替换JSON.stringify
和JSON.parse
的解析器来解决这个问题,但这为每个DDP协议交互添加了一个完整的转换层,我想支持现成的构造函数,这样我就可以发送模式进行服务发现。有趣的问题,但我认为这是不可能的。像String
这样的构造函数是函数,所以您需要为EJSON添加函数类型。我尝试了EJSON.addType('Function
,…`在猴子将typeName
和toJSONValue
修补到它里面之后,没有任何效果。我还尝试了String。u proto\uu.typeName=()=>'StringFn'
加上一个toJSONValue
修补程序,然后EJSON.addType('StringFn',…)
这也不起作用。我对此有点惊讶,因为你可能认为EJSON只是调用了typeName
来进行字符串化。我在源代码中发现,在将对象转换为DDP消息格式时,函数类型的值会被跳过,即使它们会被定义为自定义类型。