我从服务器收到错误。


  “ {” 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/

10-16 21:27