我无法理解如何将getter与我用于API的猫鼬模式结合使用。我正在将ipaddr.js模块用于ipaddr方法。
我在架构中定义了此字段:
("ptr", POINTER(c_ubyte))
我将getters设置为true,以便可以看到控制台中发生的事情,最终我只希望JSON结果中返回ipv4_address。
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
}
我了解这一行:
ClientSchema.set('toObject', {
getters: true
});
ClientSchema.set('toJSON', {
getters: true
});
导致以递归方式调用setter,从而导致RangeError:超出了最大调用堆栈大小。我完全理解其原因。如果我正在从_ipv4_address读取,则不会发生,但是架构定义了变量名称。
这是REST API的一部分,我希望POST将ipv4_address写入该字段名称。我希望获取结果时字段名称相同。
我对如何解决这个问题感到非常困惑。
答案 0 :(得分:0)
getter函数将当前字段值传递给您,因此您无需将其从this
中拉出,就可以避免递归:
get: function (me) {
//For debugging, actually want it returned
console.log(me.toString());
},