node.js - 有没有办法将用户 ID 传递给架构?
问题描述
我有一个用户模式和一个考试模式,我想将用户的 id 传递给考试的模式
const ExamSchema = new mongoose.Schema({
-----> _id: [{
class: { type: String, required: true },
module: { type: Number,required:true },
date: {type: Date, required: true }
}]
它在哪里说 _id - 我希望它是用户的 id!我应该这样做还是在用户模式上添加考试模式?像这样?
const UserSchema = new mongoose.Schema({
username: { type: String, require: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
active: { type: Boolean, default: true },
exam: [{
class: { type: String, required: true },
module: { type: Number,required:true },
date: {type: Date, required: true }
}]
});
解决方案
检查猫鼬“填充”
https://mongoosejs.com/docs/populate.html
文档的一部分,
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const personSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
age: Number,
stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
const storySchema = Schema({
author: { type: Schema.Types.ObjectId, ref: 'Person' },
title: String,
fans: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
const Story = mongoose.model('Story', storySchema);
const Person = mongoose.model('Person', personSchema);
到目前为止,我们已经创建了两个模型。我们的 Person 模型将它的 stories 字段设置为 ObjectIds 数组。ref 选项告诉 Mongoose 在填充过程中使用哪个模型,在我们的例子中是 Story 模型。我们在这里存储的所有 _id 都必须是来自 Story 模型的文档 _id。
在您的情况下,只需在考试模式中创建一个 user_id 并参考用户模式的 id
const ExamSchema = new mongoose.Schema({
user_id: {type: Schema.Types.ObjectId, ref: 'User' },
class: { type: String, required: true },
module: { type: Number,required:true },
date: {type: Date, required: true }
})
推荐阅读
- mongodb - MongoDB:在一个数组中找到两个完全匹配,但两者都没有
- apache-nifi - 在 Apache NiFi 中,是否可以增加/减少控制器的范围?
- python - ValueError:无法将字符串转换为浮点数。在插补缺失数据期间
- java - 使用 Mockito、GridFS、REST 控制器进行 Junit 测试
- node.js - 如何将一个`npm run script.js`的返回值作为参数传递给另一个`npm run script2.js`?
- ios - 编辑属性字符串时调用哪种替换方法?
- keras - 卷积神经网络训练需要大量时间(使用 keras)
- c - 指向 int 变量的 Char 指针
- c++ - C++ 正则表达式未处理的异常(ES 正则表达式对象)
- mongodb - MongoDB:applyOps:管理员未授权执行命令