2013-10-28 28 views
0

我对我的数据模式有问题。我建立的MongoDB有一个应用程序,并在这里的Node.js使用猫鼬是我的架构:在mongodb数据库上发布时奇怪的输出

var Schema = mongoose.Schema; 

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}, 
}); 

var Quartiers = new Schema ({ 
    nomquartier: {type: String}, 
    listerue: [rue], 
    critere: [misc] 
}) 

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


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

这里的应用代码:

//LIST PRODUCTS 
app.get('/api/products', function (req, res){ 
    return ObjModel.find(function (err, products){ 
    if (!err) { 
     return res.send(products); 
    } else { 
     return console.log(err); 
    } 
    }); 
}); 

//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, 
    quartiers: [Quartiers], 
    critere: [misc], 
    rue: [rue] 
    }); 
    product.save(function(err){ 
    if (!err) { 
     return console.log("created"); 
    } else { 
     return console.log(err); 
    } 
    }); 
    return res.send(product); 
}); 

//READ SINGLE ELEMENT 
app.get('/api/products/:id', function(req,res){ 
    return ObjModel.findById(req.params.id, function(err, product) { 
    if (!err) { 
     return res.send(product); 
    } else { 
     console.log(err); 
    } 
    return res.send(product); 
    }); 
}); 

//UPDATE METHOD 

app.put('/api/products/:id', function(req,res){ 
    return ObjModel.findById(req.params.id, function(err, product){ 
    product.nomville = req.body.nomville; 
    product.description = req.body.description; 
    product.quartiers= req.body.quartiers; 
    return product.save(function(err){ 
     if (!err) { 
     console.log("updated"); 
     } else { 
     console.log(err); 
     } 
     return res.send(product); 
    }); 
    }); 
}); 

//DELETE METHOD 

app.delete('/api/products/:id', function(req,res){ 
    return ObjModel.findById(req.params.id, function(err, product){ 
    return product.remove(function(err){ 
     if (!err) { 
     console.log("removed"); 
     return res.send(' '); 
     } else { 
     console.log(err); 
     } 
    }); 
    }); 
}); 

和I'n发送以下Jquery的数据库查询:

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); 
}); 

但我有eventhough端子输出一个不完整的输出是正确的,该数据库显示以下输出:编辑这就是我与你的代码萨米

[ 
    { 
    "nomville": "Strasbourg", 
    "description": "Ville de Strasbourg", 
    "_id": "526ee45a8d29774913000004", 
    "__v": 0, 
    "modified": "2013-10-28T22:25:30.970Z", 
    "quartiers": [] 
    } 
] 

你可以发现我原来的职位与这里的另一个问题:Error: key $conditionalHandlers must not start with '$' mongodb它(用于/ API /产品视图)一些额外的代码

回答

0

请提供的代码为你的API意见。 编辑:确定在发现Error: key $conditionalHandlers must not start with '$' mongodb

先放res.send保存完成后,像这样:

app.post('/api/products', function(req, res, next){ 
    var product; 
    console.log("POST: "); 
    console.log(req.body); 
    product = new ObjModel({ 
    nomville: req.body.nomville, 
    description: req.body.description, 
    quartier: req.body.quartier, 
    critere: req.body.critere, 
    rue: req.body.rue, 
    }); 
    product.save(function(err){ 
    if (err) return next(err); 
    res.send(product); 
    }); 
}); 

是什么这个(因为它不能工作):

quartiers: [Quartiers], 
critere: [misc], 
rue: [rue] 
+0

我目前没有任何意见我只是呈现结果,我在数据库本身有一个奇怪的输出 – MaximeHeckel

+0

我的意思是:处理这个http请求的快速视图在哪里“/ api/products “? –

+0

我张贴的应用程序的代码 – MaximeHeckel

0

我发现问题:

嵌入式模式必须具有以下形式,例如:

var misc = new Schema ({ 
    publictransp: Number, 
    culture: Number, 
    nature: Number, 
    [ etc...] 
})