我从服务器收到错误。
“ {” message“:{” message“:”在模型\“ Comment \”“,” name“:” CastError“,” stringValue“的路径\” _ id \“上,对值\” authors \“的ObjectId转换失败:“ \” authors \“”,“种类”:“ ObjectId”,“值”:“作者”,“路径”:“ _ id”}}“
我有模型:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var commentSchema = new Schema({
author: String,
title: String,
text: String,
favorite: Number
});
var Comment = mongoose.model("Comment", commentSchema);
module.exports = Comment;
从Angular 2编写的客户端,我使用以下方法发送请求:
getAuthors() {
return this.http.get(this.appConfig.urlServer + "/comment/authors")
.map((response: Response) => response.json());
}
我有下一条路线:
var express = require("express");
var mongoose = require("mongoose");
var Comment = require("../models/comment");
var router = express.Router();
router.get("/comment/authors", getAuthorsOfComments);
module.exports = router;
function getAuthorsOfComments(req, res) {
Comment.find({}, 'author', function(err, authors) {
if (err) {
res.status(500).json({
message: err
})
}
if (authors) {
res.status(200).json({
authors: authors
})
}
})
}
请帮我。我不知道为什么会出错。
更新1。
评论集合中的条目。
第一次进入:
{
"_id" : ObjectId("59269000483977cefe7961e0"),
"author" : "test",
"title" : "title of text",
"text" : "Big text",
"favorite" : 1
}
第二项:
{
"_id" : ObjectId("5926901b483977cefe7961f2"),
"author" : "test2",
"title" : "title of text",
"text" : "Big text",
"favorite" : 5
}
最佳答案
实际的问题出在查询方法上,您没有正确查询数据库,也没有正确调用回调函数。我将重写您的查询代码。
function getAuthorsOfComments(req, res) {
Comment.find({}, {author: 1}).then( function(err, authors) {
if (err) {
res.status(500).json({
message: err
})
}
if (authors) {
res.status(200).json({
authors: authors
})
}
})
}
{author:1}告诉mongoDB只返回作者。如果您输入0而不是1,则mongoDB将返回所有字段,但不返回author。
关于node.js - 500错误:强制转换为ObjectId的值失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44484650/