#node.js #express #mongoose
#node.js #выразить #mongoose
Вопрос:
Я хочу передать детали схемы вместо массива в моем коде. Как я могу сделать это в моем контроллере?
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:
Если вы пытаетесь передать 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-ответ и не останавливает выполнение вашего кода, но это единственный ответ, который вы могли бы отправить. Вы можете отправить только один ответ.
Комментарии:
1. Нет, вы не получили вопрос. Как вы можете видеть, я экспортирую
Admin
модуль в файл контроллера. Я хочу, чтобы тот же модуль схемы был на местеarrayObj
2. «Я хочу, чтобы тот же модуль схемы был на месте
arrayObj
«, на какую схему вы ссылаетесь? Что вы подразумеваете под «на местеof arrayObj
«?3. Я экспортирую схему из файла модели в контроллер. Я хочу иметь детали модели в
arrObj
. Массив, который я передаю прямо сейчас, предназначен только для тестирования. Вместо массива мне нужны детали схемы или, как я говорю,doc
детали. Смотрите мое РЕДАКТИРОВАНИЕ .. включая файл модели.4. «детали схемы или, как я говорю, детали документа». вам нужны свойства схемы (типы полей …) или документ (экземпляр вашего класса с «полями» и значениями)?
5. Я хочу, чтобы документ в
arrObj