идентификатор доступа для вложенного документа в mongoose - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу написать метод put в экспрессе для вложенного документа в mongoose.

Я не могу получить доступ к идентификатору вложенного документа.

  { "_id" : ObjectId("5b8d1ecbb745685c31ad8603"),  
    "name" : "abc",  
    "email" : "abc@gmail.com",  
    "projectDetails" : [   
        {  
            "technologies" : [   
                "abc",   
                "abc"  
            ],  
            "_id" : ObjectId("5b8d1ecbb745685c31ad8604"),  
            "projectName" : "abc",  
            "projectDescription" : "abc",  
            "manager" : "abc",  
            "mentor" : "abc"  
        }  
    ],  
    "__v" : 0  
}  

Я пытаюсь получить доступ к идентификатору ("5b8d1ecbb745685c31ad8604"), чтобы я мог обновить projectName.

Я не могу придумать, как написать метод put для того же самого. Пожалуйста помоги! Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018
app.put('/api/project/:id',(request,response)=>{
const projectId = request.params.id;
const projectName = "test";
db.users.update({"projectDetails._id":projectId},{$set:{"projectDetails.$.projectName":projectName}},function(err,data){
    if(data){

    }else{

    }
})})

Вместо forEach попробуйте запрос выше

0 голосов
/ 04 сентября 2018

Вы можете использовать model.findOne() и затем save() обновить документ вместо model.findOneAndUpdate().

var projectId = "5b8d1ecbb745685c31ad8604";
var newProjectName = "def"; 
model.findOne({'projectDetails._id': projectId}, (err, data) => {
    if (data) {
        data.projectDetails.forEach((project) => {
            if (project._id == projectId) {
                project.projectName = newProjectName;
            }
        });
        data.save();
    } else {
        // throw error message
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...