2012-07-29 14 views
3

我正在嘗試爲學習ExpressJS應用程序定義一個簡單的Mongoose模型。明確應用程序中的貓鼬模型(未按要求找到)

# Todo.coffee 

mongoose = require "mongoose" 
Schema = mongoose.Schema 

todoSchema = new Schema 
    title: String 
    desc: String 
    dueOn: Date 
    completedOn: Date 

Todo = new mongoose.model("Todo", todoSchema) 

我有一個Todos類是爲其他類使用。 (不知道是否它能夠更好地只使用Todo模型壽?)

# Todos.coffee 

Todo = require "Todo" 

class Todos 

    byId: (id, callback) -> 
     Todo.findOne { _id: id }, callback 

然後在我的摩卡/應單元測試...

require "should" 
Todos = require "../../../app/todos/Todos.coffee" 
Todo = require "../../../app/todos/Todo.coffee" 

describe "Todos", -> 
    describe "byId", -> 
     it "should return Todo with given ID", (done) -> 
      Todos.byId 1, (err, todo) -> 
       todo.should.be.an.instanceOf(Todo) 
       done() 

但我正在逐漸...

$ mocha --compilers coffee:coffee-script tests/backend/todos/TodosTests.coffee 

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'Todo' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:362:17) 
    at require (module.js:378:17) 
    at Object.<anonymous> (/labs/Projects/Tickle/app/todos/Todos.coffee:4:10) 
    at Object.<anonymous> (/labs/Projects/Tickle/app/todos/Todos.coffee:20:4) 
    at Module._compile (module.js:449:26) 
    at Object.require.extensions..coffee (/usr/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:22:21) 

我做錯了什麼?

回答

4

Todos.coffee中,您的requireTodo需要包含一個相對路徑,以便它被查找爲本地文件而不是安裝的節點模塊。

Todo = require "./Todo" 
+0

它的另一個問題,現在...我收到 '/labs/Projects/Tickle/node_modules/mongoose/lib/index.js:180 如果(!this.modelSchemas [名]){ TypeError:無法讀取未定義的屬性'Todo'源已啓用** [GitHub](https://github.com/jiewmeng/Tickle)** – 2012-07-31 13:27:10

+1

在此行中:'Todo = new mongoose.model(「 Todo「,todoSchema)'你不應該叫'新'。嘗試改變它:'Todo = mongoose.model(「Todo」,todoSchema)' – JohnnyHK 2012-07-31 13:35:26