2013-03-02 65 views
1

當我試圖在我的應用程序的代碼:的NodeJS - 貓鼬(對象沒有方法 「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 

應用程序/模型/評論.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) 

我已經試圖找到解決我的問題,但我發現只是this,我想,我必須按正確的順序模式(通過要求)。

感謝您的每一個答案。

回答

1

您得到該錯誤的原因是您沒有在Post.coffee文件中正確獲取Comment模式。當我做你做的時候,Comment變量是undefined。修改您的Post.coffee文件的頂端:

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

現在Comment變量是Comment模型的架構。

+1

謝謝!這是錯誤的! – user1607808 2013-03-04 18:30:17