Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor.call删除客户端和服务器之间所有未定义的属性_Meteor_Call - Fatal编程技术网

Meteor.call删除客户端和服务器之间所有未定义的属性

Meteor.call删除客户端和服务器之间所有未定义的属性,meteor,call,Meteor,Call,我有以下电话: Meteor.call('updateDoc',id,obj) updateDoc定义为: Meteor.methods({ updateDoc(id, doc) { MyCollection.update(id, {$set: doc}); } }); 用obj being来称呼它 { param1: undefined, param2: 'defined!' } 收到的文件中的结果为 { param2: 'defin

我有以下电话:

Meteor.call('updateDoc',id,obj)

updateDoc定义为:

Meteor.methods({
    updateDoc(id, doc) {
        MyCollection.update(id, {$set: doc});
    }
});
用obj being来称呼它

{
    param1: undefined,
    param2: 'defined!'
}
收到的文件中的结果为

{
    param2: 'defined!'
}
这意味着在调用和方法触发器之间的某个地方,Meteor“清除”了未定义的属性

我怀疑他们正在使用JSON.stringify,这就是为什么undefined被删除的原因

除了使用null而不是undefined(这很有效)之外,还有什么方法可以强制流星通过undefined


作为补充说明,在客户端更新集合也会“丢失”未定义的属性,即在客户端执行此更新实际上只会更新param2,而忽略param1,因此如果param1具有以前的值,它将保持不变(而不是像Mongo 2.4以后那样被取消设置)尝试更改
MyCollection.update(id,{$set:doc})像这样

MyCollection.update(id, {
  $set: {docYouWantToChange: doc}
});

尝试更改
MyCollection.update(id,{$set:doc})像这样

MyCollection.update(id, {
  $set: {docYouWantToChange: doc}
});

如果您不想使用null,可以使用空字符串,而不是未定义“”您可以发布您的插入方法,让我们在DB中查看文档结构吗?编辑您的代码将比未定义的代码更容易,如果您不想使用null,您可以使用空字符串“”您可以发布您的插入方法,让我们在DB中查看文档结构吗?编辑您的代码会更容易,但我不确定我是否理解进入DocYouwantChange的内容不确定我是否理解进入DocYouwantChange的内容