我已经在node和mongo上工作了一段时间但是现在遇到这个问题并没有解决这个问题: 这是我的代码:
router.get('/getLocBJ', function(req, res) {
mongoose.model('Locations').find({
}, function(err, locations) {
res.format({
json: function() {
res.json(locations);
}
});
}).limit(500);
});
每当我调用此API时 我的期望:它应该从集合中返回500行 发生了什么:它向我显示了这个错误:
GET Error: There was a problem retrieving: CastError: Cast to ObjectId failed for value "getLocBJ" at path "_id"
我之前做过的事情:我试图返回一些特定的值,如" _id,lat& LNG"从那以后,即使从功能中删除罪魁祸首代码,它也显示出相同的错误。 尝试清除系统缓存但没有成功。
编辑使用的架构:
var mongoose = require('mongoose');
var locationSchema = new mongoose.Schema({
trackernumber: String,
cdate : String,
accountId : String,
time : String,
speed : String,
lat : String,
lng : String,
orientation:String,
createdDate:Date,
rowData:{},
alarm_code : String,
distance : String,
alarm : {},
locFlag : String
});
mongoose.model('Locations', locationSchema);
答案 0 :(得分:1)
所以,在这件事上花了2天以上,幸运的是,我解决了这个问题。 我最近开发的所有 get API都在发生。
我是如何解决这个问题的,
虽然不知道它是如何工作的,但这是一种奇怪的解决方案 (所以我所做的请看看相同的代码): router.get('/:id/getLocBJ', function(req, res) {
mongoose.model('Locations').find({
}, function(err, locations) {
res.format({
json: function() {
res.json(locations);
}
});
}).limit(500);
});
我刚刚添加了获取参数' /:id'在API调用中:
router.get('/:id/getLocBJ', function(req, res) {
并且错误消失了我仍然没有得到它是如何工作的。
如果有人可以帮助详细说明这将非常有用。
由于
答案 1 :(得分:0)
可以尝试这一个:
router.get('/getLocBJ', function(req, res) {
mongoose.model('Locations').find().limit(500).exec(function(err, locations) {
if(err) {
return res.status(500).send({msg: 'Error occurred'});
}
return res.status(200).send(locations);
});
});
并使用module.exports
导出您的模型,因为您使用mongoose.model('Locations')
,否则您可能会收到错误。
module.exports = mongoose.model('Locations', locationSchema);
N.B:如果手动添加_id
值或使用模型创建,则首先删除该文档。 _id
会自动生成,因此您无需手动添加或在架构