ссылка на строку из одной коллекции в другую (схема mongoose) - PullRequest
0 голосов
/ 11 мая 2018

Мне нужно знать, как передать строку из одной коллекции в другую?У меня есть модель, которая выглядит следующим образом.

const enrichedEventSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
projectId: { type: mongoose.Schema.Types.ObjectId, ref: 'Project', required: true },
name: { type: String, required: true },
address: { type: String, required: true }
});

Теперь моя потребность изменилась, вместо projectId Мне нужно обратиться к projectName, которое является строкой, за последние 5 часов, я попробовал все эти возможные методы, это не работает, кто-тоНаправь меня в правильном направлении.

const enrichedEventSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
projectName: { type: String, ref: 'Project', required: true },
name: { type: String, required: true },
address: { type: String, required: true }
    });

и я тоже попробовал эту строку,

projectName: { type: mongoose.Schema.Types.String, ref: 'Project', required: true }

Ну, я пытаюсь ответить на этот вопрос:

router.post("/", (req, res, next) => {
Project.findOneAndUpdate({projectName:projectName}, 
       { $push: { enrichedEvents: enrichedEventId}},
            function (error, success) {
                if (error) {
                    console.log(error);
                } else {
                    console.log(success);
                }
            });

const enrichedEvent = new EnrichedEvent({
    _id: mongoose.Types.ObjectId(),
    name: req.body.name,
    projectName: req.body.projectName, 
});
return enrichedEvent.save()
    .then(result => {
        console.log(result);
        res.status(201).json({
            message: "Event stored",
            createdEvent: {
                _id: result._id,
                project: result.project,
                name: result.name,

            },
        });
    })
    .catch(err => {
        console.log(err);
        res.status(500).json({
            error: err
        });
    });
});
...