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
模式。 当我做你做的, Comment
variables是undefined
。 将您的Post.coffee文件的顶部修改为:
mongoose = require "mongoose" Comment = mongoose.model('Comment').schema Schema = mongoose.Schema
现在, Comment
variables是Comment
模型的模式。