当前位置: 首页 > 面试题库 >

如何在我的Mongoose模式中引用另一个模式?

西门飞星
2023-03-14
问题内容

我正在为约会应用程序构建Mongoose模式。

我希望每个person文档都包含对它们所经历过的所有事件的引用,其中events另一个是系统中具有自己模型的架构。如何在架构中对此进行描述?

var personSchema = mongoose.Schema({
    firstname: String,
    lastname: String,
    email: String,
    gender: {type: String, enum: ["Male", "Female"]}
    dob: Date,
    city: String,
    interests: [interestsSchema],
    eventsAttended: ???
});

问题答案:

您可以使用 人口 来描述它

填充是用其他集合中的文档自动替换文档中指定路径的过程。我们可以填充单个文档,多个文档,普通对象,多个普通对象或查询返回的所有对象。

假设您的事件模式定义如下:

var mongoose = require('mongoose')
  , Schema = mongoose.Schema

var eventSchema = Schema({
    title     : String,
    location  : String,
    startDate : Date,
    endDate   : Date
});

var personSchema = Schema({
    firstname: String,
    lastname: String,
    email: String,
    gender: {type: String, enum: ["Male", "Female"]}
    dob: Date,
    city: String,
    interests: [interestsSchema],
    eventsAttended: [{ type: Schema.Types.ObjectId, ref: 'Event' }]
});

var Event  = mongoose.model('Event', eventSchema);
var Person = mongoose.model('Person', personSchema);

为了显示如何使用填充,首先创建一个人员对象aaron = new Person({firstname: 'Aaron'})和一个事件对象event1 = new Event({title: 'Hackathon', location: 'foo'})

aaron.eventsAttended.push(event1);
aaron.save(callback);

然后,当您进行查询时,可以填充如下引用:

Person
.findOne({ firstname: 'Aaron' })
.populate('eventsAttended') // only works if we pushed refs to person.eventsAttended
.exec(function(err, person) {
    if (err) return handleError(err);
    console.log(person);
});


 类似资料:
  • 问题内容: 如果我有两个模式,如: 我试图像上面的示例一样将它们连接在一起,但是我不知道该怎么做。最终,如果我可以做这样的事情,那将使我的生活变得很轻松 问题答案: 听起来好像populate方法是您想要的。首先,对您的发布架构进行少量更改: 然后建立您的模型: 然后,当您进行查询时,可以像这样填充引用:

  • 问题内容: 我试图在其中一个表上创建外键,并在其他模式中引用表的列。 像这样的东西: 由于我获得了必要的赠款,因此效果很好。 现在,我想知道是否有原因不引用其他模式中的表,或者有什么需要注意的地方? 问题答案: 没问题。在表之间建立外键关系时,架构实际上没有任何影响。只要确保适当的人员具有您打算使用的架构所必需的权限即可。

  • 如果Kafka主题的Avro模式被用作另一个模式的参考,那么更新该模式的正确方法是什么? 例如,假设我们有两个Kafka主题:一个使用Avro模式用户,另一个使用UserAction。 然后我想给用户添加一个额外的字段——一个“姓氏”,所以它看起来像这样:,空以使此更改兼容。要做到这一点,我可以更改Avro模式文件,使用Maven模式插件重新生成POJO,然后如果我将使用KafkaTemplate

  • 问题内容: 我有一个特殊情况,我们的收藏需要根据电子邮件地址和swepstakes_id的组合来确保每个文档都是唯一的。我已经看了很多遍,但是我找不到如何完成这种验证的方法。 模式定义: 问题答案: 您可以使用包含两个字段的唯一索引来强制执行该操作:

  • 有没有办法用JSON schema表达对同一个JSON文档中另一个元素的引用?标题可能有点混乱,但我不是在寻找< code>"$ref"属性,它引用了另一个类型,但我很好奇,是否有一种方法可以使用指定的字段引用文档中的另一个元素。我知道对xml文档强制使用xsd是可能的,但不确定JSON。 我想做这样的事情: 我一直在研究v4的模式定义:http://json-schema.org/draft-0

  • 我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根