【问题标题】:Mongoose schema and objectid refsMongoose 模式和 objectid 参考
【发布时间】:2016-06-12 21:55:06
【问题描述】:

我想不通,希望有人能帮助我。

我基本上想要实现的是,有几个地点,每个地点都附有几节课。

我有这个猫鼬模式:

var mongoose = require('mongoose');

var lessonNames = new mongoose.Schema({
  day: {type: String },
  name: {type: String},
  startTime: {type: String},
  endTime: {type: String}
});

var locationNames = new mongoose.Schema({
  name: {type: String, required: true},
  address: String,
  lessons: [ { type: mongoose.Schema.Types.ObjectId, ref: 'lessonnames'}]
});

mongoose.model('lessonnames', lessonNames);
mongoose.model('locationnames', locationNames);

我已经管理的是添加课程,并在同一过程中添加了一个位置,并且能够将课程 ID 设置为课程参考。

但是我如何添加课程并将其 ID 添加到现有位置? 我能够找到正确的位置,但我不知道如何添加一个新的课程,其中的课程参考是用课程的 ID 填充的。

谢谢!

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    使用$push 运算符

    var LessonNames = mongoose.model('lessonnames', lessonNames);
    var LocationNames = mongoose.model('locationnames', locationNames);
    
    new LessonNames(<lesson_object>).save(function(err, lesson){
        LocationNames.update({_id: id}, {$push: {lessons: lesson._id}}, function(err, result){
    
        })
    })
    

    【讨论】:

    • 谢谢摩尔达!使用您的解决方案,它现在正在工作!我很高兴:)
    【解决方案2】:

    到目前为止,您尝试了什么?

    保存课程后,您可以找到位置并尝试location.lessons.addToSet(lesson.id)

    http://mongoosejs.com/docs/api.html#types_array_MongooseArray.addToSet

    【讨论】:

    • 我整天都在做这个,在我来这里发布问题之前一直在搜索和尝试很多东西,我主要使用的是推送和保存,但从来没有得到我想要的结果。找到了一些例子,但它们大多是相反的。将位置 ID 放在课程名称中的位置。但我认为这不是解决这个问题的方法。我要试试看!在此先感谢:)
    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 2019-07-18
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 2017-01-13
    • 2014-09-30
    相关资源
    最近更新 更多