2016-08-19 4 views
3

제 HⅢ에 값을 밀어 수 없습니다, 나는 다음과 같이 정의 된 몽구스 모델의 사용을 평균 스택 응용 프로그램이 같은 다음가 MongoDB를 배열

{ 
appt_date: 13/13/2013, 
details: [ 
    { 
     appt_time: 09:00 AM, 
     patient_id: 2015/2016, 
     patient_name: David John, 
     contact_no: 8965741234, 
     doctor_name: Albert , 
     purpose: Consultation, 

    } 
} 
다음 익스프레스 JS 코드를 사용할 때이 문서를 생성 할 수 없습니다

:

"_id": ObjectId('57b6eefd2b494e802ba146d8'), 
"appt_date": "12/20/2014", 
"details": [], 
"__v": 0 

나는 "세부 사항"배열에 데이터를 푸시 할 수없는 나는 다음과 같이

는 위의 작업을 수행 한 후, 내가 얻을 결과입니다. 내가 필요한 것은 단일 날짜 항목 (appt_date), 여러 세부 사항 (세부 배열)입니다. 이 문제를 해결하는 데 도움주세요.

감사합니다.

답변

0

시도 : 예를 들어.

var Appointment = require('../../models/appointment'); 
var appointments = new Appointment(); 
appointments.appt_date = req.body.date; 
appointment.details.push({appt_time:"09:00 AM",patient_id:"2015/2016", patient_name:"Wilfred",contact_no:"8965741234",doctor_name: "Albert", 
purpose: "Consultation"}); 
appointments.save(function(err){ 
    if(!err) 
     console.log("saved") 
}) 
+0

@ Md Nazmul Bilash - 감사합니다. appt_date를 사용하여 인스턴스에서 문서를 만들고 나중에 정보를 이전에 만든 문서, 즉'details' 배열로 업데이트/푸시해야합니다. 나는 날짜가 선택 될 때마다 새 문서를 만들고 싶지 않습니다. 이 문제를 해결하는 데 도움주세요 ... –

+0

문서를 처음 작성한 시간 : 약속 ({ "appt_date": req.body.날짜}); 다른 INF var에 약속을 밀어하려면 = 다음 나중에 newormation : Appointent.find ({_ ID : '약속의 아이디'}). 간부 (기능 (ERR, 일정이 있습니다) { 경우 (일정이 있습니다) { 약속 .details.push ({appt_time : "09:00 AM", patient_id : "2015/2016", patient_name : "Wilfred", contact_no : "8965741234", doctor_name : "알버트", 목적 : "상담"}); appointments.save (기능 (ERR) { 경우 (! ERR) 을 console.log ("저장") }) } }) –

+0

그래 내가 그했다. 나중에 다음 코드를 시도했다. 'Appointment.update ({appt_date : req.body.date}, {$ 푸시 : { '세부 정보': { appt_time : 12, patient_id : 1025 patient_name "로저" contact_no : 8089, doctor_name : "jestin", 목적 : "RCT" } }, {upsert : true}), ' '데이터를'details' 배열로 푸시하지 않습니다. 나는 정확한 문서를 찾기 위해'appt_date' 대신에'_id'를 시도했지만 실패했습니다. 이 코드의 문제점은 무엇입니까? –

1

바로 저장 한 후 details 키에 push() 방법을 사용하고, save() 후 업데이 트를 할 필요가 없습니다. 이 코드

var Appointment = require('../../models/appointment'); 
var appointments = new Appointment ({ "appt_date" : req.body.date}); 
appointments.details.push({  
    appt_time: "09:00 AM", 
    patient_id: "2015/2016", 
    patient_name: "Wilfred", 
    contact_no: "8965741234", 
    doctor_name: "Albert", 
    purpose: "Consultation" 
}); 
appointments.save(function(err, appointment){ 
    if (err) handleErr(err); 
    console.log(appointment); 
}); 
+0

하여 업데이트 할 수 있습니다 : 다중 추가 n, 항상 새로운 문서를 만듭니다. 맞습니까? 업데이트 명령 내에서 언급 된 값은 두 번째 단계에서 제공됩니다. 내가 필요로하는 것은 - 1 단계) 날짜 선택 - appt_date = selected 날짜의 문서를 추가해야합니다. 2 단계) appt_time, patient_id 등의 세부 정보가 표시되는 양식이 표시됩니다. 모든 항목에 대해 새 문서를 만들고 싶지 않습니다. 하나의 날짜 = 하나의 문서, "세부 사항"배열 안의 여러 세부 사항. 어떻게이 일을 성취 할 수 있습니까? –

+0

@ Chridam - 정의 된 모델로 날짜 선택시 문서를 만들어야합니다. 나중에 사용자가 정보를 완성하면 해당 정보를 "세부 정보"배열로 밀어 넣습니다. 약속 스케줄러를 만들려고합니다. 따라서 사용자가 "날짜"를 선택하고 정보를 삽입 한 후 나중에 "같은 날짜"를 선택하고 정보를 추가하면 해당 정보가 "세부 정보"배열로 푸시됩니다. –

+0

@ Chridam - 내가 한 일 날짜를 선택하면 날짜를 서버로 보내고 'var appointments = new Appointment ({ "appt_date": req.body.date}) 코드를 사용했습니다. 문서를 만들 수 있습니다. 동일한 예에서 정보가 제공되는 곳으로 모달이 열립니다. 이 정보를 받으면 나머지 코드 'Appointment.update ({appt_date : req.body.date})'를 사용했습니다.이 인스턴스에서 언급 된 코드는 작성된 문서에서 작동하지 않습니다. 어떻게 내가 이것을 het 수 있습니다. 창조와 추진은 두 가지 경우에 이루어집니다. –

0

당신은 날짜에 대한 문서를 업데이트하는 이상 1 app_date가있을 수 있습니다,이 시나리오는 여러 문서를 업데이트 할 것입니다, 당신은에 있습니다 executio에 .... 감사합니다 -

Appointment.update({ appt_date: req.body.date}, 
{ 
$push: { 
     'details': {  
        appt_time:"09:00 AM", 
        patient_id:"2015/2016", 
        patient_name:"Wilfred", 
        contact_no:"8965741234", 
        doctor_name: "Albert", 
        purpose: "Consultation" 
        } 
     } 
}, 
{multi: true}, 
{ 
    upsert:true 
}); 

진정한 객체 또는 당신은 _id Chridam @

+0

@ Muhammad Ali - 감사합니다. 내가 필요한 것은 하나의 appt_date와'details' 배열을위한 다중 엔트리를 가진 하나의 문서입니다. appt_date는 인스턴스에서 생성되며 언급 한 모델로 문서를 만들고 싶습니다. 나중에이 문서를 업데이트해야합니다. 즉, 정보를'details' 배열로 푸시해야합니다. 나는 날짜가 선택 될 때마다 새 문서를 만들고 싶지 않습니다. 내가 필요한 것은 문서의 단일 날짜 입력,'details' 배열의 다중 정보 항목입니다. –