2013-10-28 1 views
0

mongodb와 특히 node.js 용 몽구스 패키지에 문제가 있습니다. 나는 다음과 같은 스키마가 :

var Schema = mongoose.Schema; 

var location = new Schema ({ 
    nomville: {type: String, required: true}, 
    description: {type: String, required: true}, 
    quartier: [quartier], 
    critere: [misc], 
    modified: {type: Date, default: Date.now} 
}); 

var misc = new Schema ({ 
    publictransp: {type: Number}, 
    culture: {type: Number}, 
    traffic: {type: Number}, 
    nature: {type: Number}, 
    supermarket: {type: Number}, 
    school: {type: Number}, 
    sport: {type: Number}, 
    nightlife: {type: Number}, 
    mean: {type: Number} 
}); 

var rue = new Schema ({ 
    nomrue: {type: String}, 
    modified: {type: Date, default: Date.now} 
}); 

var quartier = new Schema ({ 
    nomquartier: {type: String}, 
    listerue: [rue], 
    modified: {type: Date, default: Date.now} 
}) 

var ObjModel = mongoose.model('Obj',location); 

을 그리고 나는 JQuery와 쿼리에이 스키마의 객체를 게시하려고 할 때이 얻을 :

[오류 : 키 $의 conditionalHandlers는 '$'로 시작할 수 없습니다]

아이디어가 있으십니까? 나는 이걸 완전히 붙잡고있다.

EDIT1 :

//CREATE PRODUCTS 
app.post('/api/products', function(req,res){ 
    var product; 
    console.log("POST: "); 
    console.log(req.body); 
    product = new ObjModel({ 
    nomville: req.body.nomville, 
    description: req.body.description, 
    quartier: [quartier], 
    critere: [misc], 
    }); 
    product.save(function(err){ 
    if (!err) { 
     return console.log("created"); 
    } else { 
    return console.log(err); 
    } 
    }); 
    return res.send(product); 
}); 

EDIT2 : 여기에 포스트 기능입니다 여기에 쿼리

jQuery.post("/api/products", { 
    "nomville": "Strasbourg", 
    "description": "Ville de Strasbourg", 
    "quartier": [ 
    { 
     "nomquartier": "Centre", 
     "listerue": [ 
      { 
      "nomrue": "22 Novembre" 
      }, 
      { 
      "nomrue": "Abattoir" 
      }, 
      { 
      "nomrue": "Fonderie" 
      }, 
      { 
      "nomrue": "Francs Bourgeois" 
      } 
     ] 
    }, 
    { 
     "nomquartier": "Cité de l'Ill", 
     "listerue": [ 
      { 
      "nomrue": "Anguille (chemin de l)" 
      }, 
      { 
      "nomrue": "Civelles (promenade des)" 
      }, 
      { 
      "nomrue": "Hechner (rue)" 
      }, 
      { 
      "nomrue": "Phario (pont)" 
      } 
     ] 
    }, 
    { 
     "nomquartier": "Krutenau", 
     "listerue": [ 
      { 
      "nomrue": "Abreuvoir (rue de l)" 
      }, 
      { 
      "nomrue": "Bain Finkwiller (rue du)" 
      }, 
      { 
      "nomrue": "Fustel de Coulanges (quai)" 
      }, 
      { 
      "nomrue": "Hôpital (place de l)" 
      } 
     ] 
    } 
    ], 
    "critere":[ 
    { 
     "publictransp": 2, 
     "culture": 8, 
     "traffic": 5, 
     "nature": 7, 
     "supermarket": 3, 
     "school": 5, 
     "sport": 6, 
     "nightlife": 4, 
     "mean": 5 
    }, 
    ] 
}, function(data, textStatus, jqXHR) { 
    console.log("Post resposne:"); console.dir(data); console.log(textStatus);   console.dir(jqXHR); 
}); 

쿼리 게시 후 내가 무엇을 얻을 그것은이다 :

[ 
    { 
    "nomville": "Strasbourg", 
    "description": "Ville de Strasbourg", 
    "_id": "526ecdd3a78290010c000004", 
    "__v": 0, 
    "modified": "2013-10-28T20:49:23.235Z", 
    "critere": [], 
    "quartiers": [ 
     { 
     "_id": "526ecdd3a78290010c000005", 
     "listerue": [] 
    } 
    ] 
    } 
] 

을이 정상입니까? ?

+0

당신은 "나는 JQuery와 쿼리에이 스키마의 객체를 게시 할 때"무엇을 의미합니까. 모델 호출 위치에 소스 코드를 게시하십시오. – bekite

+0

"/ api/products"에 대한 POST 요청을 처리하는 서버 측 코드를 확인해야합니다. '$'는 jquery와는 아무런 관련이 없습니다. 그것은 빨간 청어 다. –

답변

1

스키마가 정의되기 전에 location 스키마 정의에서 criteremisc을 참조하고 있습니다. 이로 인해 스키마 정의의 예기치 않은 undefined 값으로 인해 잘못된 쿼리가 함께 모이게되므로 다소 이상한 오류가 발생합니다. 이 넘어

, 당신이 여기서 뭘하려고하는지 모르겠 :

product = new ObjModel({ 
    nomville: req.body.nomville, 
    description: req.body.description, 

    // Are the next two lines a mistake? It appears as though you're trying 
    // to create an object using the schemas. 
    quartier: [quartier], 
    critere: [misc], 
}); 
+0

나는 잠을 확실히 필요가있는 것처럼 보인다. 아하 감사합니다! – MaximeHeckel

관련 문제