node.js - Mongoose:使用其他模型的模式
问题描述
我有一个模型“模板”
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 中使用我的模板模式?
解决方案
尝试像这样映射它
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
});
推荐阅读
- javascript - 验证 2 组或更多组单选按钮,每组包含 4 个单选按钮
- cuda - CUDA syncthreads() 阻塞其他线程
- oracle - 创建 Oracle 文本索引失败
- python - 尝试使用 Admin Directory API 从 Google 组中删除用户时出现 HttpError 403
- r - 为什么即使在添加 add='mean_se' 后错误栏也不会出现在 ggpubr::ggbarplot 中
- python - Pythion Discord Bot @'ing people
- python - 如何在循环中创建一个熊猫数据框数组
- javascript - 如何使用递归每 3 秒打印一次函数内部的变量?
- node.js - MERN 堆栈的 MongoDB/Mongoose 安全性
- node.js - 如何解决“错误:belongsTo 调用的东西不是 Sequelize.Model 的子类”?