模型与架构上的 Node.js 和 mongoose module.exports

Posted

技术标签:

【中文标题】模型与架构上的 Node.js 和 mongoose module.exports【英文标题】:Node.js and mongoose module.exports on a model vs Schema 【发布时间】:2015-07-03 16:38:54 【问题描述】:

我一直在关注有关 MEAN 堆栈的许多教程,但遇到了一个我发现很难回答的问题(注意:我在搜索时发现了一个可能duplicate,但不要'不相信它回答了我的问题)

以这段代码为例,可以找到here

// app/models/nerd.js
// grab the mongoose module
var mongoose = require('mongoose');
// define our nerd model
// module.exports allows us to pass this to other files when it is called
module.exports = mongoose.model('Nerd', 
  name : type : String, default: ''
);

完成教程后,我重写了代码以尝试像这样复制课程(“菜单项”用于限制):

var mongoose = require('mongoose');

module.exports = mongoose.model('Item', 
  name: type: String, required: true,
  description: type: String, require: true,
  price: type: String, required: true,
  ingredients: [
    name: type: String, default: '',
    amt: type: String, enum: ['None', 'Reg', 'XTRA'], required: true
  ]
);

我将使用一个界面来创建新的菜单项。我应该让代码保持原样,还是使用 Schema?

【问题讨论】:

【参考方案1】:

嗯。我正在阅读代码以发布作为差异的示例,并得出了这个结论。

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var BearSchema   = new Schema(
    name: String
);

module.exports = mongoose.model('Bear', BearSchema);

然后我注意到架构是内联定义的(我认为?)而不是被声明。我会假设这是因为以后,在这个模型中添加更多的模式声明以及方法对我来说会更干净。如果有人可以给我澄清,我会给你答案!

【讨论】:

我在 scotch 上遵循相同的教程,我只是想知道,预期的 Nerd 数据 json 是什么?喜欢: "_id" : ObjectId("5b965b3a15da33b567d9f794"), "name" : "Tom"

以上是关于模型与架构上的 Node.js 和 mongoose module.exports的主要内容,如果未能解决你的问题,请参考以下文章

大规模 Node.js 网关架构设计与工程实践

在node.js领域中哪一个框架用来架构API比较好

Node.js 和 Passport 对象没有方法 validPassword

node.js 的猫鼬外键问题

node.js 中的多人游戏架构 - 与 Redux 的状态管理和同步

Node系列:揭秘 Node.js 底层架构