我是猫鼬新手。我正在研究MEAN angular 2应用程序。我已经创建了基本设置,需要开始使用MEAN angular 2应用程序。
model
文件夹,其中定义了模型架构。我已将其正确导出以便在其他地方访问。routes
文件夹,我正在注册api调用以将数据保存到数据库。我最后会返回路由器。在我的服务器app.js或index.js上,我引用了bodyparser和express,mongoose并连接到了mongoose。注册的api路线等。
我正在使用POSTMAN对此进行测试。
以下是创建集合的一条路线
const testModel= require('../models/testModel');
module.exports = (router) => {
router.post('/Update', (req, res) =>{
console.log(req.body);
let tModel= new testModel({
a: req.body.a,
key1:{
b: req.body.b,
key2: {
c: req.body.c,
key3: {
x: req.body.x
}
}
}
});
tModel.save((err) =>{
if(err){
res.json({success : false, message: 'Could not update details. Error:'+ err});
}else{
res.json({success: true, message: 'details updated'});
}
});
});
}
问题陈述:
在上述路线之后,我又写了一条路线来从同一个集合中获取数据。当我传递多个参数时,这不起作用。下面是代码片段。
const testModel= require('../models/testModel');
router.get('/getDetails', (req,res) => {
testModel.find({'a': '1', 'b' : '2', 'c': '3'}).exec(function(err, data) {
if(err){
res.json({success: false, messsage : 'Could not get the details. Error:' + err})
}
else{
res.send(data);
}
但没有参数或一个参数我在使用POSTMAN测试时得到了结果。
const testModel= require('../models/testModel');
router.get('/getDetails', (req,res) => {
console.log("req body::" + JSON.stringify(req.body));
testModel.find().exec(function(err, data) {
if(err){
res.json({success: false, messsage : 'Could not get the details. Error:' + err})
}
else{
res.send(data);
}
请帮助。
答案 0 :(得分:1)
您运行错误的过滤器以查找文档。
{'a': '1', 'b' : '2', 'c': '3'}
问题出在您的模型对象中,您将b
定义为key1
和c
的其他属性的属性,作为key1.key2.c
的属性,依此类推和x一样。
{
a: req.body.a,
key1:{
b: req.body.b,
key2: {
c: req.body.c,
key3: {
x: req.body.x
}
}
}
}
使用提供的过滤器,mongoDB不返回任何对象,因为它没有对象,其中b和c是对象的直接属性。
您可以尝试关注过滤器,看看这是否适合您。
{
"a" : 1,
"key1.b":2,
"key1.key2.c": 3
}