objectId の配列を処理しようとしているときに問題が発生しました (mongoosejs モデルにさらにデータを追加するため)。助けていただければ幸いです。コンテキストは次のとおりです。
製品とプロバイダーがある小さな nodejs / angularjs アプリがあります。製品には、プロバイダーを参照する objectId の配列であるプロパティ プロバイダーがあります。スキーマは次のとおりです。
var productSchema = new Schema({
name : { type: String, required: true, trim: true},
providers : [{ type: Schema.Types.ObjectId, ref: 'provider' }]
});
ユーザーは、GUI を介してプロバイダーのリストを照会できます。次に、各製品で使用できるプロバイダーを選択できます (チェックボックス)。内部的には、providers _id に対応する 16 進文字列を角度製品モデルの配列プロバイダーにプッシュし、リクエストが nodejs/express サーバーに送信されることを意味します。
ここに問題があります。16 進文字列をさまざまな方法で objectId に変換しようとしましたが、正しい方法が見つかりません。私の最後の試みは、マングースの「保存」機能でした。こちらが現在のバージョン。
productSchema.pre('save', function (next) {
var err = new Error('There was an error when trying to add the providers id as objectId'),
i = 0;
for (i = 0; i < this.providers.length; i++) {
this.providers[i] = mongoose.Types.ObjectId(this.providers[i].toString())
}
next(err);
});
どんな助けでも大歓迎です。マングースはすべてを一人で処理すると思っていました。これを行う通常の方法は何ですか?(事前保存は単なるアイデアでした)
読んでくれてありがとう