我在Mongodb中有以下模式:
问题架构:
'use strict';
// modules dependencies
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
// model
var ProblemSchema = new Schema({
description: {
type : String,
unique : false,
required : false
},
creator: {
type : Schema.Types.ObjectId,
unique : false,
required : true,
ref : 'User'
},
idea: {
type : Schema.Types.ObjectId,
unique : false,
required : true,
ref : 'Idea'
}
});
mongoose.model('Problem', ProblemSchema);
和Idea架构:
'use strict';
// modules dependencies
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
// model
var IdeaSchema = new Schema({
name: {
type : String,
unique : true,
required : true
},
description: {
type : String,
unique : false,
required : false
},
creator: {
type : Schema.Types.ObjectId,
unique : false,
required : true,
ref : 'User'
},
image : String
});
mongoose.model('Idea', IdeaSchema);
在支持中我有以下内容:
exports.getById = function (req, res) {
Problem.findById({idea:req.params.id}, function (err, problem) {
if (err) return res.status(400).send(err)
if (problem) {
res.send(problem);
} else {
res.status(404).send('Problem not found')
}
});
};
我正在尝试根据Idea ID查询问题,但这不起作用,我收到以下错误: 获取http://localhost:3001/api/problems/5698ee90d62061f40bb00a7d 400(错误请求) 我是angularjs和nodejs的新手,希望任何人都可以帮助我?
答案 0 :(得分:0)
尝试使用findOne而不是findById?
exports.getById = function (req, res) {
Problem.findOne({idea:req.params.id}, function (err, problem) {
if (err) return res.status(400).send(err)
if (problem) {
res.send(problem);
} else {
res.status(404).send('Problem not found')
}
});
};
答案 1 :(得分:0)
函数findById
表示按_id字段查找单个文档。 findById(id)几乎等同于findOne({ _id: id })
。将其替换为findOne
,如下所示
exports.getById = function (req, res) {
Problem.findOne({idea:req.params.id}, function (err, problem) {
if (err) return res.status(400).send(err)
if (problem) {
res.send(problem);
} else {
res.status(404).send('Problem not found')
}
});
};