【发布时间】:2020-11-10 07:31:54
【问题描述】:
MongoDB 新手,Javascript 堆栈,需要帮助了解此错误的原因。
我创建了我的模型:
const
Mongoose = require('mongoose');
Schema = Mongoose.Schema,
Model = Mongoose.model;
module.exports = Model('Project',
new Schema({
icon : String,
name : String,
state : String,
number : String
})
);
这是我的 MongoDB 文档:
[![MongoDB Document][1]][1]
我在调用 API 时尝试接收集合中的所有文档,因此根据 Mongoose 文档,我正在使用 find() 方法。
这是我的 API 实现:
const Project = require('../../models/project');
router.get('/projects/:page?/:limit?',
function(req, res, next){
const page = Math.max(req.params.page || 1, 1) - 1;
const limit = Math.max(req.params.limit || 20, 20);
//Verified : I am hitting the API
console.log("Reached API /projects");
Project.find()
.populate('icon')
.populate('name')
.populate('state')
.populate('number')
.limit(limit).skip(page * limit).exec(
function(err, project)
{
if (err) { return next(err); }
res.send(project);
}
); //End of exec()
}//End of unction
);
我成功使用 fetch() 进行 API 调用,但我收到所有字符串值的“Cast to ObjectId failed error”。
我相信我的 Mongo DB 文档中有一些非常简单的东西可能会丢失。请帮助我理解并解决这个问题。
**编辑 ---
**
谢谢
【问题讨论】:
-
我不认为错误是由提供的代码引起的。有没有与
_id相关的代码?例如Project.findById(_id)? -
@thammada.ts 不,我没有使用任何 findById(_id) 方法。正如我在帖子中提到的,我正在尝试检索集合中的所有文档,所以我只使用了 find() 而不是 findById() 或 findOne()。
-
是否还有其他带有
_id的文档没有 ObjectId 的十六进制表示?
标签: javascript reactjs mongodb mongoose