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.