在Schema.ObjectId上定义方法

时间:2014-11-03 14:56:08

标签: mongoose

我想在Schema.ObjectId上定义一个新方法,这样当我在Schema.ObjectId的实例上调用它时,它应该调用它。

Schema.ObjectId.truncate = function(){
    return this.toString(0,4) + this.toString(this.length-4);
}

User.findById(id, function(err, user){
    console.log(user.id.truncate());
});

上面的东西(它不起作用)。

我甚至在Schema.ObjectId.prototype上尝试了它,但它说它未定义。

1 个答案:

答案 0 :(得分:0)

您可以在文档本身而不是文档ID上调用一个。我不确定你要用截断法做什么,但这里有一些东西:

UserSchema.methods.truncateId = function() {
    var idString = this.id.toString();
    return idString.substr(0, idString.length - 4);
}

您可以在user上自行调用,而不是user.id

User.findById(id, function (err, user) {
    console.log(user.truncateId());
});

此外,ObjectIds没有长度。在调用.length之前,您需要将其变为字符串。