Mongodb Meteor Mongo:findone的错误处理

Mongodb Meteor Mongo:findone的错误处理,mongodb,meteor,Mongodb,Meteor,我正在尝试使用meteor mongo中的findOne处理错误 从中,我似乎可以通过执行collection.findOne{query}、functionerr、result{}来处理错误,但这样做会导致错误消息: 匹配错误:匹配失败。其中之一,匹配。可能或匹配。可选验证 以下代码起作用: export default createContainer((props) => { let theID = props.params.theID; Meteor.subscribe('t

我正在尝试使用meteor mongo中的findOne处理错误

从中,我似乎可以通过执行collection.findOne{query}、functionerr、result{}来处理错误,但这样做会导致错误消息:

匹配错误:匹配失败。其中之一,匹配。可能或匹配。可选验证

以下代码起作用:

export default createContainer((props) => {
  let theID = props.params.theID;
  Meteor.subscribe('thePubSub');
  return {
    x: theData.findOne({_id: theID}),
  };
}, App);
以下代码不适用:

export default createContainer((props) => {
  let theID = props.params.theID;
  Meteor.subscribe('thePubSub');
  return {
    x: theData.findOne({_id: theID}, function(err,result){
      if(!result){
        return {}
      };
    }),
  };
}, App);
我做错了什么?我应该如何解决这个错误?这是流星特有的错误吗


非常感谢您的帮助

你到底想用回调处理什么样的错误

与您链接到的帖子使用的node的mongodb驱动程序的findOne不同

预期签名为:

collection.findOne[选择器],[选项]

没有涉及回调,因为该方法是同步运行的,但是被动的

如果要在找不到文档时返回默认值,只需使用JS逻辑或:

//在将要使用的右侧提供替代值 //如果左边的是falsy。 theData.findOne{u id:theID}{124;{}; 更严格的方法是将其类型与

queryResult的类型==“未定义”
请注意,如果数据集合是由上述订阅Meteor.subscribe'TheSubsubsub'提供的,我怀疑Meteor在您查询该集合时是否有时间填充该集合…

该匹配错误看起来像是由服务器上的匹配包生成的。您在浏览器控制台或服务器控制台中看到该错误?您好@zim,谢谢您的回复。此错误是在浏览器控制台上生成的。如果找不到id,我将尝试处理错误。如果我想区分文档是否未定义或文档是否未被查询,我应该怎么做?您所说的未被查询是什么意思?意思是,如果我加载组件并启动createContainer函数,我的文档x还没有准备好,但如果要查询的id有效,它很快就会准备好。但是,如果要查询的id无效,则x将变为未定义。系统如何知道文档是由于初始延迟时间而未定义的,还是在查询失败后未定义的?那么,您可能正在查找一旦服务器发布的客户端看到已编辑的响应,就会执行的onReady回调。逻辑OR起作用。非常感谢你!