setterとgetterプロパティの使用がモデルクラスからどれくらい安全であるかを知りたいと思います。Loopback.ioのプロパティセッターとゲッター
これは、すでにループバック・ユーザー・モデルで使用されており、ここで見ることができます:User Code
は、このどこにも文書化されていないのはなぜ?それを使うことはできますか?
setterとgetterプロパティの使用がモデルクラスからどれくらい安全であるかを知りたいと思います。Loopback.ioのプロパティセッターとゲッター
これは、すでにループバック・ユーザー・モデルで使用されており、ここで見ることができます:User Code
は、このどこにも文書化されていないのはなぜ?それを使うことはできますか?
私はまだ「公式の」ドキュメントを探していますが、私たちの主なエンジニアは別のSOの答えをここに文書化しています:https://stackoverflow.com/a/24253273/52160。
ドキュメントで正式なサポートが見つかった場合は、質問を更新します。
実際には、深く掘り下げていくと、実際にはこれが使用され、loopback-datasource-jugglerモジュールのModelBuilderクラスで定義されていることがわかりました。 それはhere
ModelClass.setter = {};
を定義したので、それはおそらく実装されますが、文書化されていないhere
Object.defineProperty(ModelClass.prototype, propertyName, {
get: function() {
if (ModelClass.getter[propertyName]) {
return ModelClass.getter[propertyName].call(this); // Try getter first
} else {
return this.__data && this.__data[propertyName]; // Try __data
}
},
set: function(value) {
var DataType = ModelClass.definition.properties[propertyName].type;
if (Array.isArray(DataType) || DataType === Array) {
DataType = List;
} else if (DataType === Date) {
DataType = DateType;
} else if (DataType === Boolean) {
DataType = BooleanType;
} else if (typeof DataType === 'string') {
DataType = modelBuilder.resolveType(DataType);
}
var persistUndefinedAsNull = ModelClass.definition.settings.persistUndefinedAsNull;
if (value === undefined && persistUndefinedAsNull) {
value = null;
}
if (ModelClass.setter[propertyName]) {
ModelClass.setter[propertyName].call(this, value); // Try setter first
} else {
this.__data = this.__data || {};
if (value === null || value === undefined) {
this.__data[propertyName] = value;
} else {
if (DataType === List) {
this.__data[propertyName] = DataType(value, properties[propertyName].type, this.__data);
} else {
// Assume the type constructor handles Constructor() call
// If not, we should call new DataType(value).valueOf();
this.__data[propertyName] = (value instanceof DataType) ? value : DataType(value);
}
}
}
},
configurable: true,
enumerable: true,
});
を使用...あなたの答えのための
感謝されます!私はすでにこれを見てきました。私は誰かが正式にそれを確認できるかどうか疑問に思った...とにかく、私は完全に検証されるまで、質問を開いたままにする。 – mitsos1os