Определение пользовательских методов Schema в mongoose для возврата одного свойства? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть две схемы, и из каждой я хочу вернуть одно свойство.

Вот схема для одного документа или файла.

// @ts-check
import { Schema, model } from "mongoose";

const docSchema = new Schema({
  name: { type: String, required: true },
  approved: { type: Boolean, default: false },
  docType: { type: String, required: true },
  size: { type: Number, required: true },
  bucket: { type: Schema.Types.ObjectId, ref: "Bucket" }
});

docSchema.methods.getSize = function(cb) {
  // Return the size of document
};

const Doc = model("Document", docSchema);

export default Doc;

А это схема для корзины документов

// @ts-check
import { Mongoose, Schema, model } from "mongoose";

const bucketSchema = new Schema({
  name: { type: String, required: true, index: true, unique: true },
  projectId: { type: String, required: true, index: true },
  contractorId: { type: String, required: true, index: true },
  Docs: [{ type: Schema.Types.ObjectId, ref: "Document" }]
});

bucketSchema.methods.getSize = function(cb) {
  // return the size of all documents that belong to a single bucket
  // How do I traverse over the Docs array and use Doc.getSize()???
};

const Bucket = model("Bucket", bucketSchema);

export default Bucket;


Есть ли способ сделать это?Я не хочу запрашивать базу данных каждый раз, когда мне нужно получить размер корзины, а затем просмотреть результаты и добавить размер каждого документа.Я хочу упростить этот процесс, чтобы в основном я звонил Bucket.getSize(), и он возвращал мне размер корзины, чтобы я мог запретить пользователям загружать файлы, когда они превысили определенный лимит.Любая помощь будет оценена.

...