gpt4 book ai didi

node.js - Mongoose 和 NodeJS 项目的文件结构

转载 作者:IT老高 更新时间:2023-10-28 21:51:33 24 4
gpt4 key购买 nike

目前,我的 Mongoose/NodeJS 应用程序的/models/models.js 文件中有我的所有模型(架构定义)。

我想将它们分成不同的文件,例如:user_account.js、profile.js 等。但是我似乎无法这样做,因为我的 Controller 中断并报告“找不到模块 ”一旦我把这些类分开。

我的项目结构如下:

/MyProject
/controllers
user.js
foo.js
bar.js
// ... etc, etc
/models
models.js
server.js

我的 models.js 文件的内容如下所示:

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

mongoose.connect('mongodb://localhost/mydb');

var UserAccount = new Schema({
user_name : { type: String, required: true, lowercase: true, trim: true, index: { unique: true } },
password : { type: String, required: true },
date_created : { type: Date, required: true, default: Date.now }
});

var Product = new Schema({
upc : { type: String, required: true, index: { unique: true } },
description : { type: String, trim: true },
size_weight : { type: String, trim: true }
});

我的 user.js 文件( Controller )如下所示:

var mongoose    = require('mongoose'), 
UserAccount = mongoose.model('user_account', UserAccount);

exports.create = function(req, res, next) {

var username = req.body.username;
var password = req.body.password;

// Do epic sh...what?! :)
}

如何将架构定义分解为多个文件并从我的 Controller 中引用它?当我确实引用它时(在架构位于新文件中之后)我收到此错误:

*错误:尚未为模型“user_account”注册架构。*

想法?

最佳答案

这是一个示例 app/models/item.js

var mongoose = require("mongoose");

var ItemSchema = new mongoose.Schema({
name: {
type: String,
index: true
},
equipped: Boolean,
owner_id: {
type: mongoose.Schema.Types.ObjectId,
index: true
},
room_id: {
type: mongoose.Schema.Types.ObjectId,
index: true
}
});

var Item = mongoose.model('Item', ItemSchema);

module.exports = {
Item: Item
}

要从 app/controllers/items.js 中的项目 Controller 加载它 我会这样做

  var Item = require("../models/item").Item;
//Now you can do Item.find, Item.update, etc

换句话说,在模型模块中定义模式和模型,然后只导出模型。使用相对的 require 路径将模型模块加载到 Controller 模块中。

要建立连接,请在服务器启动代码(server.js 或其他)中尽早处理。通常你会希望从配置文件或环境变量中读取连接参数,如果没有提供配置,则默认为开发模式 localhost。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost');

关于node.js - Mongoose 和 NodeJS 项目的文件结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com