Mongoose模式getter递归



我很难理解如何将getter与API使用的mongose模式一起使用。我正在为ipaddr方法使用ipaddr.js模块。

我在我的模式中定义了这个字段:

ipv4_address: {
type: Buffer,
required: false,
get: function () {
//For debugging, actually want it returned
console.log(this.ipv4_address.toString());
},
set: function (v) {
return ipaddr.parse(v).toByteArray();
},
select: false,
index: true
}

我已经将getters设置为true,这样我就可以看到控制台中发生了什么,最终我只想在JSON结果中返回ipv4_address。

ClientSchema.set('toObject', {
getters: true
});
ClientSchema.set('toJSON', {
getters: true
});

我知道这条线:

console.log(this.ipv4_address.toString());

导致递归调用setter,导致超出RangeError:最大调用堆栈大小。我完全理解其中的原因。如果我从_ipv4_address中读取,这不会发生,但模式定义了变量名。

这是REST API的一部分,我希望POST将ipv4_address作为字段名称编写。我希望在获取结果时字段名称相同。

我只是很困惑我该如何避开这件事。

getter函数传递当前字段值,因此不需要将其从this中取出,并且可以避免递归:

get: function (me) {
//For debugging, actually want it returned
console.log(me.toString());
},

最新更新