sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose:Cast to ObjectId misslyckades för värde

Exemplet från mongoose-dokumenten du refererade till använder Number för personSchema._id och ObjectId för de andra.

Jag antar att de gör detta i exemplet bara för att visa att det är möjligt att använda antingen. Om du inte anger _id i schemat, ObjectId kommer att vara standard.

Här har alla dina poster ett _id fält som är ett ObjectId , men du behandlar dem som siffror. Dessutom fält som personID och taskID existerar inte, om du inte har utelämnat den del där du definierar dem.

Om du ville använda siffror för alla dina _id fält, måste du definiera det i schemana.

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

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

Sedan för att skapa en nyhet med ett visst ID och tilldela det till en skapare:

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

Men saken att notera här är att när du använder något annat än ObjectId som _id du tar på dig ansvaret för att hantera dessa värden själv. Objekt-ID:n genereras automatiskt och kräver ingen extra hantering.

Edit:Jag märkte också att du lagrar refs på båda sidor av dina associationer. Detta är helt giltigt och du kanske vill göra det ibland, men observera att du måste ta hand om att lagra referenserna själv i pre krok.



  1. Skapa mongoose modell från resultat av lean query

  2. Mongodb upsert inbäddat dokument

  3. Lagra en fil i mongodb med node.js

  4. MongoDB eller CouchDB - lämplig för produktion?