NodeJS – Mongoose(对象没有方法“id”)

当我在我的应用程序中尝试以下代码时:

应用程序/模型/ Post.coffee

mongoose = require "mongoose" CommentModel = require "./Comment" Comment = CommentModel.Schema Schema = mongoose.Schema Post = new Schema { title: String, slug: {type: String, index: { unique: true, dropDubs: true }}, content: String, author: String, tags: [String], comments: [Comment], created: { type: Date, default: Date.now } } Post.statics.findBySlug = (slug, cb) -> this.model("Post").findOne({ slug: slug }, cb) PostModel = mongoose.model "Post", Post module.exports = PostModel 

应用程序/模型/ Comment.coffee

 mongoose = require("mongoose") Schema = mongoose.Schema Comment = new Schema { author: String, content: String, approved: Boolean, created: { type: Date, default: Date.now } } CommentModel = mongoose.model "Comment", Comment module.exports = CommentModel 

应用程序/控制器/ PostsController.coffee (只有一个方法)

 commentDestroy: (req, res, next) -> Post.findBySlug req.params.slug, (err, doc) -> if (err) return next err if doc == null res.send 404 return doc.comments.id(req.params.comment).remove() doc.save (err) -> if err next err res.json doc 

它以错误结束:

 TypeError: Object [object Object],[object Object],[object Object],[object Object],[object Object] has no method 'id' at Promise.PostsController.commentDestroy (/home/r41ngoloss/Projects/www/my-express/app/controllers/PostsController.js:88:22) at Promise.addBack (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/promise.js:128:8) at Promise.EventEmitter.emit (events.js:96:17) at Promise.emit (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/promise.js:66:38) at Promise.complete (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/promise.js:77:20) at Query.findOne (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/query.js:1533:15) at model.Document.init (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/document.js:229:11) at model.init (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/model.js:192:36) at Query.findOne (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/query.js:1531:12) at exports.tick (/home/r41ngoloss/Projects/www/my-express/node_modules/mongoose/lib/utils.js:408:16) 

我已经试图find我的问题的解决scheme,但我发现这一点 ,我认为,我有正确的顺序架构(按要求 )。

感谢每一个答案。

你得到这个错误的原因是你没有在Post.coffee文件中正确地得到Comment模式。 当我做你做的, Commentvariables是undefined 。 将您的Post.coffee文件的顶部修改为:

 mongoose = require "mongoose" Comment = mongoose.model('Comment').schema Schema = mongoose.Schema 

现在, Commentvariables是Comment模型的模式。