2014-12-14 9 views
0

음의 배열 모델에 데이터를 누르면, 내가 개념 문제와 실제 오류를 가지고 ... 내가 재고 모듈 개념에서 일하고 있어요, 간단하고, 두 개의 모델로 구성 :몽구스

  • 재고
  • 항목

인벤토리 모델은 단지 "항목"필드를 포함하고 해당 필드가 실제 항목 객체 모델을 단지 참조 (populete하기 위해), 당신은 items: [type: String, ref: 'Item']을 알고있다.

Item 객체는 실제 데이터 컨테이너이며 모든 데이터 (name, itemCode, description, disponibility, exist ... 등등)를가집니다. 이 개념의 문제는 저를 혼란스럽게합니다.

항목이 생성되면, 그것은 필요

은 재고 모델 문서의 배열 "항목"에 밀려, 나는이 조각을 코딩하지만 나에게 오류를 검색 :

var inventario = new Inventario(); //The inventory document instance 

var inventarios = router.route('/inventarios'); 

inventarios.post(function(req, res) { 
// itamdata object 
var nuevoItem = { 
    _id: req.body._id, 
    descripcion: req.body.descripcion, 
    costo: req.body.costo, 
    precioMin: req.body.precioMin, 
    precioMax: req.body.precioMax, 
    existencia: req.body.existencia, 
    disponible:req.body.disponible 
    }; 
    // Create a new item 
    Item.Create(nuevoItem, function(err, item) { 
    if(err) { 
     res.status(500).json({ 
     msg: 'Problema interno con la base de datos', 
     error: err 
     }); 
    } 
    // call push from push method of documents array 
    inventario.items.push({ _id: nuevoItem._id }); 

    res.status(200).json({msg: 'Item Creado', token: item}); 
    }); // fin Item.Create 

}); //fin inventarios.post 

오류 : /home/nano/Dev/JS/OMI/node_modules/express/lib/router/index.js:482 this.stack.push(layer); ^ TypeError: Cannot call method 'push' of undefined

내 개념은 정말 간단하며 모델의 필요성과 수출을 테스트 한 결과 모두 괜찮아 보였으므로 누구나 문제를 해결할 아이디어가 있습니까?

+0

Inventario() 생성자에 문제가있는 것 같습니다. 그 코드를 보여 주시겠습니까? –

+0

@KiranPagar 한 가지 더 친숙한 구조로 모든 코드를 다시 작성하면 오류가 해결되었습니다 ... 이제는 이상한 오류가 발생합니다. '오류 : 전송 한 후에 헤더를 설정할 수 없습니다.' – Nano

+0

꽤 일반적입니다. 오류, 여기에 훌륭한 답변입니다 http://stackoverflow.com/questions/7042340/node-js-error-cant-set-headers-after-they-are-sent –

답변

0

오류 : 당신이 스키마에 잘못된 API 파일 또는 HTML 페이지 및 잘못된 req.body 매개 변수 이름의 필드 이름을 보낼 때

Can't set headers after they are sent.

오류가 제공됩니다. 사용하려고 할 수 있습니다
또 다른 방법 : 당신의 server.js 파일에

app.use(bodyParser.json({limit: '5mb'})); 

.