【问题标题】:Node.js: Module does not recognize SchemaNode.js:模块无法识别架构
【发布时间】:2011-12-28 23:02:48
【问题描述】:

server.coffee 我有:

User = mongoose.model 'User', s.UserSchema

addEntryToCustomer = require './lib/addEntryToCustomer'

addEntryToCustomer.coffee 我有:

module.exports = (phone,res,req) -> 
    User.find {account_id: phone.account_id }, (err, user) ->

我得到这个错误:

2011-11-14T19:51:44+00:00 app[web.1]: ReferenceError: User is not defined

【问题讨论】:

  • 您正在做什么以确保在server.coffee 中定义的UseraddEntryToCustomer.coffee 可见?你需要一些module.exports/require

标签: javascript node.js coffeescript


【解决方案1】:

在 node.js 中,模块在它们自己的上下文中运行。这意味着 addEntryToCustomer.coffee 中不存在 User 变量。

您可以将User 设为全局(小心使用):

global.User = mongoose.model 'User'

将用户变量传递给模块:

module.exports = (User, phone, res, req) -> 
  User.find {account_id: phone.account_id }, (err, user) -> …

或者重新加载模型:

mongoose = require 'mongoose'

module.exports = (phone,res,req) -> 
  User = mongoose.model 'User'
  User.find {account_id: phone.account_id }, (err, user) ->

也可以向模型本身添加方法,但在定义 Schema 时需要这样做:http://mongoosejs.com/docs/methods-statics.html

【讨论】:

    猜你喜欢
    • 2012-03-11
    • 2022-01-22
    • 2021-11-01
    • 2016-07-08
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多