我是猫鼬的新手。我正在研究 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);
}
请帮忙。
您正在运行错误的过滤器来查找文档。
{'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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句