Express App 中的 Mongoose 模型(未被要求找到)
Posted
技术标签:
【中文标题】Express App 中的 Mongoose 模型(未被要求找到)【英文标题】:Mongoose Models in Express App (not found by require) 【发布时间】:2012-07-27 10:05:31 【问题描述】:我正在尝试为学习型 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
然后在我的 Mocha/should 单元测试中...
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)
我做错了什么?
【问题讨论】:
【参考方案1】:在Todos.coffee
中,您的require
或Todo
需要包含相对路径,以便将其作为本地文件而不是已安装的节点模块进行查找。
Todo = require "./Todo"
【讨论】:
现在又是一个问题...我收到/labs/Projects/Tickle/node_modules/mongoose/lib/index.js:180 if (!this.modelSchemas[name]) TypeError: Cannot read property 'Todo' of undefined
来源在GitHub
在这一行:Todo = new mongoose.model("Todo", todoSchema)
你不应该打电话给new
。尝试将其更改为:Todo = mongoose.model("Todo", todoSchema)
以上是关于Express App 中的 Mongoose 模型(未被要求找到)的主要内容,如果未能解决你的问题,请参考以下文章
express与mongoose基本使用,以及cors解决跨域
无法将值传递到 MongoDB,使用 Node 和 Express,Mongoose
Express.js 项目中在哪里进行验证——在数据库层进行验证(re. Mongoose)?