Передайте значение схемы вместо массива для создания документа с использованием mongoose - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу передать детали схемы вместо массива в моем коде.Как я могу сделать это в моем контроллере?

module.exports.registerAdmin = (req, res, next) =>{ 
    var admin = new Admin();
    admin.email = req.body.email;
    admin.password = req.body.password;
    admin.firstName = req.body.firstName;
    admin.lastName = req.body.lastName;

    const reqq = crypto.createHash('md5').update(admin.companyName).digest('hex');

    let valueNum = reqq.match(/\d/g).join("").toString().substring(0,6);

    admin.companyID = valueNum;
     console.log(valueNum);

 const arrayObj = [{con:'IND'},{con:'USA'},{con:'JPN'}];

    admin.save((err, doc) =>{
        if(!err){

            res.send(doc);

            var thingSchema = new mongoose.Schema({}, { strict: false, collection: valueNum });
            var Thing = mongoose.model(valueNum , thingSchema);
            var thing = new Thing(arrayObj); 
            thing.save();
            console.log(thing);

вместо arrayObj, мне нужно передать детали моей схемы, чтобы я мог использовать ее для создания документа внутри создаваемой коллекции.в коде.

РЕДАКТИРОВАТЬ: - Файл модуля схемы.

var adminSchema = new mongoose.Schema({
    firstName : {
                type: String,
                required: "First name can't be empty."
                },
    lastName : {
                type: String,
                required: "Last name can't be empty."
                },              
    email :     {
                type: String,
                required: "Email can't be empty.",
                unique: true
                },
    password :  {
                type: String,
                required: "Password can't be empty",
                minlength: [6 ,"Password must be atleast 6 character long."]
                }
    saltSecret: String //this is user for encryption and decryption of password
});

mongoose.model('Admin', adminSchema);

Вложенный объект MongoDB: -

введите описание изображения здесь

1 Ответ

0 голосов
/ 04 апреля 2019

Если вы пытаетесь передать документ admin на new Thing(), вы сначала попытаетесь получить его doc.schema.obj или doc.schema.paths (если вам нужен тот же _id), затем вы получите все свойств в массиве, создайте объект с парами ключ-значение и передайте его в new Thing(arrObj).

admin.save((err, doc) =>{
        if(err) return err;
        res.send(doc);
        let arr = Object.keys(doc.schema.obj);
        let arrObj = {};
        arr.map(key => arrObj[key] = doc[key]);
        var thingSchema = new mongoose.Schema({}, { strict: false, collection: valueNum });
        var Thing = mongoose.model(valueNum , thingSchema);
        var thing = new Thing(arrObj); 
        thing.save();
        console.log(thing);
})

Я заметил, что вы отправляете документ (res.send(doc)) до создания экземпляра вашей Thing модели, конечно, res.send() только завершает HTTP-ответ и не останавливает выполнение кода, но это единственный ответ, который вы быть в состоянии отправить. Вы можете отправить только один ответ.

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