sql >> データベース >  >> NoSQL >> MongoDB

すべてのサブドキュメントのObjectIdを作成していないMongoose自己参照スキーマ

    埋め込まれたCollectPointを宣言するときは、新しいオブジェクトを作成する必要があります アイテム:

    var data = new CollectPoint({
        name: "Level 1",
        collectPoints: [
            new CollectPoint({
                name: "Level 1.1",
                collectPoints: []
            })
        ]
    });
    

    このように_id およびcollectPoints CollectPointのインスタンス化によって作成されます それ以外の場合は、プレーンなJSONObjectを作成するだけです。

    この種の問題を回避するには、バリデーター を作成します。 アイテムのタイプが間違っている場合にエラーをトリガーする配列の場合:

    var CollectPointSchema = new mongoose.Schema({
        name: { type: String },
        collectPoints: {
            type: [this],
            validate: {
                validator: function(v) {
                    if (!Array.isArray(v)) return false
                    for (var i = 0; i < v.length; i++) {
                        if (!(v[i] instanceof CollectPoint)) {
                            return false;
                        }
                    }
                    return true;
                },
                message: 'bad collect point format'
            }
        }
    });
    

    このようにすると、次のエラーが発生します:

    var data = new CollectPoint({
        name: "Level 1",
        collectPoints: [{
            name: "Level 1.1",
            collectPoints: []
        }]
    });
    



    1. Pythonからredisに無限大を渡すにはどうすればよいですか?

    2. MacにMongoDBをインストールする

    3. SpringdatamongoはクエリでORを使用します

    4. 複数のdjangoサイトがあるセロリ