我正在尝试使用meteor-mongo中的findOne
处理错误。
从this stackoverflow question开始,我似乎可以通过执行collection.findOne({query}, function(err, result){ <handleError> }
来处理错误,但这样做会导致错误消息:
“匹配错误:Match.OneOf,Match.Maybe或Match.Optional验证失败”
以下代码有效:
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);
我做错了什么,我应该如何解决这个错误?这是一个特定于流星的错误吗?
非常感谢任何帮助!
答案 0 :(得分:1)
您正在尝试使用回调处理什么样的错误?
Meteor's findOne
与您链接的帖子所使用的节点mongodb
驱动程序findOne
不同。
预期的签名是:
collection.findOne([selector],[options])
不涉及回调,因为该方法同步运行(但是被动反应)。
如果要在找不到文档时返回默认值,可以使用JS逻辑OR:
// Provide an alternative value on the right that will be used
// if the left one is falsy.
theData.findOne({_id: theID}) || {};
更严格的方法是将其类型与
进行比较typeof queryResult === 'undefined'
请注意,如果theData
收集由上述订阅Meteor.subscribe('thePubSub')
提供,我怀疑Meteor是否有时间在您查询时填充客户端上的收藏...