在我的一些 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 属性。

关于mongodb - meteor .js : How to run check() when arguments are Mongodb ObjectId's?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20850227/

10-16 20:00