在我的一些Meteor方法中,我将从客户端发送Mongodb ObjectId作为参数.我想通过Meteor的check()系统来运行它们,但我似乎找不到任何与它们成功匹配的东西.
我试过了
var someObjectId = Meteor.Collection.ObjectId(); check(someObjectId, Meteor.Collection.ObjectId()) // fails check(someObjectId, { _str : String }) //fails check(someObjectId, String) //fails
任何帮助非常感谢!
代替:
check(someObjectId, Meteor.Collection.ObjectID());
试试没有括号:
check(someObjectId, Meteor.Collection.ObjectID);
编辑-
请注意,此检查的错误消息并不理想.
check({}, Meteor.Collection.ObjectID); // Error: Match error: Expected
你可以假设消息应该是这样的
// Error: Match error: Expected ObjectId, got object
您可以在check包的此片段中看到为什么会发生这种情况.
https://github.com/meteor/meteor/blob/devel/packages/check/match.js
if (pattern instanceof Function) { if (value instanceof pattern) return; // XXX what if .name isn't defined throw new Match.Error("Expected " + pattern.name); }
Meteor.Collection.ObjectID
没有name
财产.