Мангуст: используйте схему другой модели - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть модель 'Template'

var Schema = new mongoose.Schema({
tId: { type: Number, unique: true },
type: {
    type: String, required: true},
devName: { type: String, required: true, trim: true },
subject: { type: String, required: true, trim: true },
});

module.exports = mongoose.model('Template', schema, "template");

Я хочу сохранить ее историю в другой модели, 'TemplateHistory'. Я не хочу снова писать схему как

var HistorySchema = new mongoose.Schema({
id: number,
template:{
    tId: { type: Number, unique: true },
    type: {
        type: String, required: true},
    devName: { type: String, required: true, trim: true },
    subject: { type: String, required: true, trim: true }
}
});

Как я могу использовать мою шаблонную схему в HistorySchema выше?

1 Ответ

0 голосов
/ 24 декабря 2018

Попробуйте отобразить это следующим образом

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

var HistorySchema = new mongoose.Schema({
id: number,
templateId: { type: Schema.Types.ObjectId, ref: 'Template', required: true }

});
//add virtual 

HistorySchema.set('toObject', { virtuals: true });
HistorySchema.set('toJSON', { virtuals: true });

HistorySchema.virtual('template', {
    ref: 'Employee',
    localField: 'templateId',
    foreignField: '_id',
    justOne: true
});

В вашем сервисе или контроллере:

HistorySchema
.find({})
.populate('template')
.exec( function(err, history)
    {
      res.json(history); // history[0].template
    });
...