sql >> Database >  >> NoSQL >> MongoDB

Cast to Number mislukt voor waarde NaN (typenummer) bij pad op een berekend veld Mongoose

Zowel beoordelingen als gemiddelde beoordeling moeten virtuele velden zijn:anders zal de /0-divisie uw schema laten crashen op het moment dat u een item in uw verzameling hebt met product.ratings = 0 . Dus wat ik zou doen, is ten eerste beoordelingen definiëren door een getterfunctie voor een virtueel veld:

productSchema.virtual("numberRatings").get(function() {
    return this.ratings.length;
});

Ervan uitgaande dat this.ratings is een array waarin alle beoordelingen voor dit specifieke product worden opgeslagen. Op deze manier, elke keer dat u product.numerRatings opent, , wordt het bijgewerkte aantal vermeldingen in die array weergegeven. Met dit in gedachten hoeft u alleen een klein beetje voorwaardelijke logica toe te voegen aan uw gemiddelde beoordeling:

productSchema.virtual("averageRating").get(function() {
    return this.ratings.length > 0 ? this.totalRating / this.ratings.length : 0;
});

Zolang er geen beoordelingen in de array zijn, product.averageRating zal een 0 produceren, zonder een problematische deling te proberen. Op het moment dat die array beoordelingen begint te bevatten, wordt een gemiddelde berekend.



  1. MongoDB:Hoe alle resultaten van dezelfde collectie te verenigen?

  2. Hoe voeg ik een element toe aan de interne lijst van MongoDB?

  3. Waarom verlopen Redis-sleutels niet?

  4. mongodb schema.createIndex is geen functie