У меня есть две схемы, и из каждой я хочу вернуть одно свойство.
Вот схема для одного документа или файла.
// @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()
, и он возвращал мне размер корзины, чтобы я мог запретить пользователям загружать файлы, когда они превысили определенный лимит.Любая помощь будет оценена.