我从服务器收到错误。
“{”message“:{”message“:”为了对于模型\“评论\”“,”名称“:”CastError“,在路径\”_ id \“中为了对值\”authors \“而转换为ObjectId失败, “stringValue的”: “\” \作者 “”, “种类”: “的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。
Comment集合中的条目。 第一次进入:
{
"_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
}
答案 0 :(得分:0)
实际问题在于您的查询方法,您没有正确查询数据库而没有正确调用回调函数。我将重写您的查询代码。
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 将返回所有字段,但不是作者。