gpt4 book ai didi

node.js - 如果文件未导出,如何使用在单独文件中定义的 Mongoose 模型?

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

考虑一个非常简单的 Express 4 应用结构:

-- app.js
-- models
|--db.js
|--news.js

其中 news.js 包含一个 Mongoose 模式和基于该模式的模型:

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

var newsSchema = new Schema({
title: String,
subtitle: String,
// other fields...
});

var News = mongoose.model('News', newsSchema);

据我了解,为了让 app.js 使用 News 模型,它必须像这样在脚本中要求文件: require( './models/news')。此外,news.js 必须像这样导出模型:module.exports = News;.

但是,我遇到了一些脚本,它们不导出在单独文件中定义的模型(或任何相关内容),但仍然能够在不同文件中使用这些模型和/或架构,只需要求模型文件,然后做这样的事情:

var mongoose = require('mongoose');
var News = mongoose.model('News');

这种行为怎么可能?这是 Mongoose 的一个特殊功能?如果模型/架构未在该文件中导出,文件如何使用该文件中定义的模型或架构?

最佳答案

这最终会起作用,因为当您在各种文件中调用 require('mongoose') 时,您会返回相同的对象。换句话说:在您的情况下,它在 app.jsnews.js 之间共享。

当您创建新模型时(使用 mongoose.Model('Name', schema)),Mongoose 将该模型实例存储在模型的内部列表中。

这还允许您使用 mongoose.Model('Name') 按名称获取实例。 Mongoose 将在其内部列表中查找该模型,并将其返回。

关于node.js - 如果文件未导出,如何使用在单独文件中定义的 Mongoose 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274979/

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