node.js - 如何在 Mongoose 的不同文件中分离模式、方法和静态

标签 node.js mongodb mongoose

我正在尝试使用 Mongoose 改进我的 Nodejs 代码的文件结构。

我已经将每个模式分离到不同的文件中,但对于某些模式,方法和静态的数量非常大,我最终得到的模式文件太大(>1500 行)。

我想将不同文件中的方法和模式分开,并在模式中“要求”它们

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var UserSchema = new Schema({
  email: String,
  pwdhash: String,
});

UserSchema.methods.someMethod1 = function() {
  // Do something 1
};

UserSchema.methods.someMethod2 = function() {
  // Do something 2
};

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

我希望它看起来像这样:

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var UserSchema = new Schema({
  email: String,
  pwdhash: String,
});

// Requiring methods
require("./methods/user.js");

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

但是,在/methods/user.js 文件中,我找不到如何从 mongoose 实例中检索架构(仅模型)以分配方法。

我错过了什么吗?有没有更好的方法来分离方法和静态?

最佳答案

你可以这样做:

制作一个methods.js文件,并在methods文件中加入这段代码:

module.exports = function(UserSchema) {
    UserSchema.methods.someMethod1 = function() {
    // Do something 1
    };

    UserSchema.methods.someMethod2 = function() {
    // Do something 2
    };
}

在你的主文件之后,你必须这样做:

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var UserSchema = new Schema({
  email: String,
  pwdhash: String,
});

// Requiring methods
require("./methods.js")(UserSchema);

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

我很确定这会起作用:)

关于node.js - 如何在 Mongoose 的不同文件中分离模式、方法和静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47594651/

相关文章:

javascript - Yodlee Interactive - 用于身份验证的 coblogin API - 错误代码 415

node.js - Mongoose ,阵列模型上的深度人口

node.js - 使用多个值部分更新嵌套对象 Express.js MongoDB

php - 将用户数据从 PHP 同步到 meteor 应用程序

node.js - 如何使用expressJS使用新数据重新渲染 View ?

node.js - 方法 "collection.find()"最多接受两个参数

javascript - 如何门面(代理)websocket 端口

MongoDB初学者-规范化还是不规范化?

linux - 为什么这个 Linux 二进制文件(SCons 输出)没有执行?

javascript - Mongoose 不返回空对象的属性