sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose:Cast til ObjectId mislykkedes for værdi

Eksemplet fra mongoose-dokumenterne, du refererede til, bruger Number for personSchema._id felt og ObjectId for de andre.

Jeg formoder, at de gør dette i eksemplet kun for at demonstrere, at det er muligt at bruge enten. Hvis du ikke angiver _id i skemaet, ObjectId vil være standard.

Her har alle dine poster en _id felt, som er et ObjectId , men alligevel behandler du dem som tal. Desuden felter som personID og taskID eksisterer ikke, medmindre du har udeladt den del, hvor du definerer dem.

Hvis du ønskede at bruge tal til alle dine _id felter, skal du definere det i skemaerne.

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

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

For derefter at oprette en nyhed med et bestemt ID og tildele den til en skaber:

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

Men tingen at bemærke her er, at når du bruger noget andet end ObjectId som _id felt, påtager du dig selv ansvaret for at administrere disse værdier. ObjectId'er er autogenereret og kræver ingen ekstra administration.

Edit:Jeg har også bemærket, at du gemmer refs på begge sider af dine associationer. Dette er fuldstændig gyldigt, og du vil måske gøre det nogle gange, men bemærk, at du selv skal sørge for at gemme referencerne i pre krog.



  1. Vælg sidste værdi af array i underdokument

  2. MongoDB 4.0 JREundtagelse:"Markør"-indstillingen er påkrævet, undtagen for aggregering med forklare-argumentet

  3. hvad er det egentlige formål med $ref (DBRef) i MongoDb

  4. HDFS NameNode Høj tilgængelighed i Hadoop