У меня есть приложение, в котором я пытаюсь добавить записи контактов в документ пользователя «Профиль», где каждая запись имеет массивы/поддокументы для нескольких номеров телефонов и адресов электронной почты.Обновление вспомогательных документов не работает
Так Профиль Схема выглядит следующим образом:
var ContactSchema = require('./contact');
var UserSchema = new Schema({
first_name:{
type: String
},
last_name:{
type: String
},
contacts:[ContactSchema]
});
ContactSchema выглядит следующим образом:
var ContactSchema = new Schema({
contact_name:{
type: String
},
contact_age:{
type: String
},
phones:[{
phone_number:{type: String},
phone_type:{type: String}
}],
emails:[{
email_address:{type: String},
email_type:{type: String}
}]
});
Я упрощена вышеприведенные схемы, но они по существу представляют собой структуру, что я имею дело с.
Моя задача заключается в API ExpressJs/Mongoose, где я хочу передать объект и обновить поддокументы.
Вот как я думал, что это будет сделано, но это не работает:
var express = require('express');
var router = express.Router();
var Profile = require('../models/profile');
var vCard = require('vcards-js');
router.route('/addcontact/:ownerId')
.put(function(req, res){
Profile.findOne({'owner_id':req.params.ownerId}, function(err, profile){
if(err)
res.send(err);
profile.contacts.push({
first_name : req.body.first_name,
last_name : req.body.last_name
})
req.body.phones.forEach(function(phone, index, arr){
profile.contacts.phones.push({
phone_type:phone.phone_type,
phone_number:phone.phone_number
})
})
req.body.emails.forEach(function(email, index, arr){
profile.contacts.emails.push({
email_type:email.email_type,
email_address:email.email_address
})
})
profile.save(function(err){
if(err)
res.send(err);
res.json(profile);
})
});
});
module.exports = router;
Так уточнить, у меня есть существующий «Профиль пользователя» запись. Пользовательская схема имеет массив «контактов» для хранения нескольких контактов. Каждый контакт имеет телефонные и электронные почтовые ящики, поэтому каждая запись контактов может содержать несколько электронных писем и телефонных номеров.
То, что я пытаюсь сделать, это .PUT записи контактов и обновление документа профиля пользователя.
Спасибо за любой совет мудреца !!
Привет, Джексон, попробовал ваш код, но я просто пустые массивы. Я что-то упускаю? Я могу console.log и видеть, что массивы передаются ... – cnak2
Пустые массивы - телефоныArray и emailsArray? или в db после обновления? – Jackson
PLS напишите свой код, с console.log и результаты журнала здесь. – Jackson