MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Прехвърлянето към номер е неуспешно за стойност NaN (номер на тип) по пътя на изчислено поле Mongoose

И оценките, и averageRating трябва да бъдат виртуални полета:в противен случай разделянето /0 ще срине вашата схема в момента, в който имате запис в колекцията си с product.ratings = 0 . И така, това, което бих направил, е първо да дефинирам оценки чрез функция за получаване на виртуално поле:

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

Ако приемем, че this.ratings е масив, в който се съхраняват всички оценки за този конкретен продукт. По този начин всеки път, когато влизате в product.numerRatings , ще се покаже актуализираното количество записи в този масив. Имайки това предвид, просто трябва да добавите малко условна логика към средната си оценка:

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

Докато в масива няма оценки, product.averageRating ще произведе 0, без да прави опит за проблемно деление. В момента, в който този масив започне да съдържа оценки, ще бъде изчислена средна стойност.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо Spring ReactiveMongoRepository няма метод за запазване за Mono?

  2. Имената на полета FieldPath не може да съдържат „.“ в $група

  3. MongoDB:Фатална грешка:Клас „MongoClient“ не е намерен

  4. Не може да използва вложени VariableOperators.mapItemsOf в Spring Data MongoDb

  5. монах срещу мангуста за Mongodb