ループバックで REST 公開オブジェクトの一部の代わりにスラッグ( )を使用したいString
ObjectID
デフォルトでは、ID プロパティが定義されておらず、モデル オプションの idInjection が false の場合、LDL は次のようにモデルに id プロパティを自動的に追加します。
id: {type: Number, generated: true, id: true}
String
タイプとして指定する必要があり、代わりにgenerated: false
ループバックが生成されるのを回避する必要があると考えましたObjectId
。
id: { type: String, generated: false, id: true },
--> これはまったく機能しませんでした
コードではmongodb.js
、 my の名前が何であれ、値の損失を説明id
する関数でラップされていることがわかります。ObjectID
String
補足: また、この generated
プロパティは mongodb コネクタ コードでは使用されませんが、その目的は何ですか?
これまでの私の解決策
スキーマ定義のカスタム プロパティ ( objectId 、生成されたものがわからないため) を追加すると、次のようになります。
id: {
type: String,
objectId: false,
id: true
},
次に、このプロパティを次のように使用しますMongoDB.prototype.create@mongodb.js:155
。
var isObjectId = self.getDataSource(model)
.getModelDefinition(model)
.properties[idName]
.objectId;
if (idValue === null) {
delete data[idName]; // Allow MongoDB to generate the id
} else {
var oid = isObjectId ? ObjectID(idValue) : idValue; // Is it an Object ID?
data._id = oid; // Set it to _id
delete data[idName];
}
save()
メソッドを同じ方法で更新したところ、スラッグを使用してオブジェクトを挿入/変更し、REST インターフェイスからもアクセスできるようになりました。
質問
これが正しいかどうかわかりませんが、何かが壊れますか?
また、依存関係を変更するという考えはあまり好きではないので、公式の方法を使用するか、StrongLoopの皆さんがこれを利用できると思われる場合はプル リクエストを作成することをお勧めします。