首页 > 解决方案 > 有没有办法将用户 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 }
  }]
});

标签: node.jsmongodbexpressmongoosemongoose-schema

解决方案


检查猫鼬“填充”

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 }
  })

推荐阅读