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

Mongoose:Odeslání do ObjectId selhalo pro hodnotu

Příklad z mongoose dokumentů, na které jste odkazovali, používá Number pro personSchema._id pole a ObjectId pro ostatní.

Předpokládám, že to v příkladu dělají jen proto, aby demonstrovali, že je možné použít kterýkoli z nich. Pokud nezadáte _id ve schématu ObjectId bude výchozí.

Zde mají všechny vaše záznamy _id pole, které je ObjectId , přesto s nimi zacházíte jako s čísly. Dále pole jako personID a taskID neexistují, pokud jste nevynechali část, kde je definujete.

Pokud byste chtěli používat čísla pro všechna vaše _id pole, budete to muset definovat ve schématech.

var newsSchema = new Schema({
  _id: Number,
  _creator: {type: ObjectId, ref: "Person"},
  // ...
})

var personSchema = new Schema({
  _id: Number,
  // ...
})

Chcete-li pak vytvořit novinku s konkrétním ID a přiřadit ji tvůrci:

var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});

Zde je však třeba poznamenat, že když použijete něco jiného než ObjectId jako _id přebíráte odpovědnost za správu těchto hodnot sami. ObjectId se generují automaticky a nevyžadují žádnou další správu.

Edit:Také jsem si všiml, že ukládáte reference na obou stranách vašich asociací. To je zcela platné a možná to budete chtít někdy udělat, ale uvědomte si, že byste se museli postarat o uložení referencí sami v pre háček.



  1. Mongodb Geospatial index nepodporuje $box?

  2. Je mi služba Azure Cosmo DB za 45 MB databázi přeúčtována?

  3. Nelze vyřešit odmítnutí slibu a odeslat pole jako odpověď

  4. Mongoose předá objekt požadavku middlewaru