sql >> Databáze >  >> NoSQL >> MongoDB

Samoodkazované schéma Mongoose nevytváří ObjectId pro všechny dílčí dokumenty

Při deklaraci vloženého CollectPoint byste měli vytvořit nový objekt položky :

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

Tímto způsobem _id a collectPoints bude vytvořeno instancí CollectPoint jinak právě vytváříte prostý JSONObject.

Chcete-li se těmto problémům vyhnout, vytvořte si validátor pro vaše pole, které spustí chybu, pokud jeho položky mají nesprávný typ:

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

Tímto způsobem dojde k chybě:

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



  1. Vložení Date() do Mongodb přes mongo shell

  2. Vypočítejte medián v agregačním rámci MongoDB

  3. Práce s PTVS, IronPython a MongoDB

  4. MongoDB:Nepodařilo se nastavit zásuvky během spouštění