0

マングース配列の人口に問題があります。私の2つのモデル/スキーマは次のようになります:

終点

// create schema
const schema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    interface: {
        type: ObjectId,
        required: true,
        ref: "Devices.interfaces"
    },
    room: {
        type: ObjectId,
        ref: "Rooms"
    }
    //commands: []
});

// register model
mongoose.model("Endpoints", schema);

デバイス

// create schema
const schema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    room: {
        type: ObjectId,
        ref: "Rooms"
    },
    interfaces: [{
        type: {
            type: String, 
            required: true, 
            enum: [
                "RS232", 
                "ETHERNET"
            ]
        },
        settings: {
            //..
        }
    }]

});

// register model
mongoose.model("Devices", schema);

エンドポイント インターフェイスにデータを入力しようとすると、MissingSchemaError: Schema has not been registered for model "Devices.interfaces"エラーが発生します。

ドキュメント (デバイス)

[
    {
        "_id": "5d5c0b8268dcf72a24f3e9b9",
        "name": "Test - 1",
        "interfaces": [
            {
                "_id": "5d5c0b8268dcf72a24f3e9bb",
                "typ": "RS232"
            },
            {
                "_id": "5d5c0b8268dcf72a24f3e9ba",
                "typ": "ETHERNET"
            }
        ],
        "__v": 0
    },
    {
        "_id": "5d5c0d1fd4fefd1708901d1b",
        "name": "Test - 2",
        "interfaces": [
            {
                "_id": "5d5c0d1fd4fefd1708901d1d",
                "type": "RS232"
            },
            {
                "_id": "5d5c0d1fd4fefd1708901d1c",
                "type": "ETHERNET"
            }
        ],
        "__v": 0
    }
]

ドキュメント (エンドポイント)

{
    "_id": "5d5c0bef68dcf72a24f3e9bc",
    "name": "Test - 1",
    "interface": "5d5c0d1fd4fefd1708901d1d",
    "__v": 0
}

デバイス ドキュメント内の配列に有効なオブジェクト ID がありますが、クエリ作成が正しく機能しないのはなぜですか? 別のスキーマ/モデルを登録せずに、エンドポイント ドキュメントからインターフェイスを照会するにはどうすればよいですか?

デバイス schmea の配列を に変更しようとしましたが、うまくいきませんでしたmongoose.Schema。同じエラーが発生します。

編集:クエリが追加されました。

        const query = model("Endpoints").findOne({
            _id: "5d5c0bef68dcf72a24f3e9bc"
        });

        query.populate([ { path: 'interface', populate: [] } ]);

        query.exec((err, doc) => {
          // do something
        });

4

0 に答える 0