1

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);
});

どんな助けでも大歓迎です。マングースはすべてを一人で処理すると思っていました。これを行う通常の方法は何ですか?(事前保存は単なるアイデアでした)

読んでくれてありがとう

4

0 に答える 0