插入mongoose集合并导出模型

时间:2015-04-28 17:13:40

标签: node.js mongodb mongoose

我无法理解mongoose并在node / express中导出。

我有这个model.js文件

var mongoose = require("mongoose"),
  Schema = mongoose.Schema;

var UserSchema = new Schema({
  name: String
});

var User = mongoose.model("User", UserSchema);

if (User.count() == 0) {
    User.insert({name: 'john doe'})
};

module.exports = User;

我想导出这个var用户,以便我以后可以在我的app.js中的app.post路由中插入新用户。

var User = require("User")

但它表示模块用户未定或类似。

2 个答案:

答案 0 :(得分:0)

只要您打算使用模型之前需要model.js文件,您就可以使用Mongoose的内部模型缓存来检索任何其他文件中的模型。

<强> main_file.js

var mongoose = require('mongoose');
require('./model.js') // loads models
// Only need to load them once for entire project

var User = mongoose.model('User'); // Notice no schema provided
// You can do this in any other file as long as
// they are required after the models are loaded

旁注:count是异步操作,因此您的条件检查无法按预期工作。

答案 1 :(得分:0)

我假设model.js是你文件的名称。

您需要包含model.js的路径。例如,如果我在我的项目根目录中名为models的文件夹中有model.js,那么我会这样做:

Person

当你使用require()时,npm假设你要么谈论核心模块之一,要么讨论./node_modules目录中的一个npmjs包。如果它不是核心模块或位于node_modules中,那么节点将不知道在哪里找到它 - 除非你给它一个完整的路径。这篇博文很好地解释了它:

http://www.bennadel.com/blog/2169-where-does-node-js-and-require-look-for-modules.htm