【问题标题】:Is there a way to pass user Id to schema?有没有办法将用户 ID 传递给架构?
【发布时间】:2020-12-19 17:47:13
【问题描述】:

我有一个用户架构和一个考试架构,我想将用户的 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.js mongodb express mongoose mongoose-schema


    【解决方案1】:

    检查猫鼬“填充”

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

    【讨论】:

    • 谢谢!但是我应该把这两个模式放在同一个文件中还是可以把它放在不同的文件中?
    • 您可以根据需要将其放在单独的文件中。只需导入模型即可。
    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    相关资源
    最近更新 更多