2013-03-02 4 views
1

Когда я пытаюсь этот код в моем приложении:NodeJS - Mongoose (Объект не имеет метода "идентификатор")

приложение/модели/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

Причина, по которой вы получаете эту ошибку, заключается в том, что вы неправильно получаете схему Comment в файле Post.coffee. Когда я делаю то, что вы сделали, переменная Comment - undefined. Изменить в верхней части вашего файлаPost.coffee к:

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

Теперь переменная Comment является схема с Comment модели.

+1

Спасибо! Это была ошибка! – user1607808

Смежные вопросы