javascript node.js получает сообщение / переменную из префикса mongoose mongodb в пост-хук в express.js - PullRequest
0 голосов
/ 11 июня 2019

У меня есть 2 схемы, которым нужны данные друг другу во время операции сохранения.Когда модель1 сохранена, идентификатор модели1 понадобится модели2, а по завершении модели1 потребуется идентификатор модели2.

express.js

SCHEMA1.full_name = fullName;
SCHEMA1.other_fields = other_details;

var variableName = 'inside the controller';

schema2 = new schema(req.body);

SCHEMA1.save(function (err, result){
});

SCHEMA1.js

var SCHEMA1 = mongoose.Schema({
    full_name: String,
    other_fields : String//etc
    schema2_foreign_field:{
        type: Schema.Type.ObjectId,
        ref: 'schema2'
    }
})

SCHEMA1.pre('save', function(){
    var fullName = this.full_name;
    var otherFields = this.other_fields;

    var schema2= this.model('schema2')

    schema2.name = 'Bryan';
    schema2.clocking_time = Date.now();

    schema2.save();
    var schema2Id = schema2._id;
    /********************************************
    *   how can i get schema2Id above into pre  *
    *   hook after the data has been saved      *
    ********************************************/
    //perform operation inside schema and compare 
    //result with controller variableName
})

SCHEMA1.post('save', function(){
    SCHEMA1.schema2_foreign_field=schema2Id;//obtained from above
    SCHEMA1.save();
})

1 Ответ

1 голос
/ 12 июня 2019

Объявите переменную внутри схемы и используйте ее в двух хуках, т.е. var variableName = '';

SCHEMA1.pre('save', function(){
    ......others

    variableName= schema2._id
})

Schema1.post('save', function(){
    SCHEMA1.schema2_foreign_field=variableName;//obtained from above
    SCHEMA1.save();
});

Переменная pre hook теперь может использоваться в функции post hook

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...