我开始学习node.js和猫鼬,并且我不理解下面的代码。
我有2个文件:app.js和idea.js
const mongoose = require('mongoose')
require('./models/Idea')
const Idea = mongoose.model('ideas')
const mongoose1 = require('mongoose')
const Schema = mongoose1.Schema
const IdeaSchema = new Schema(
{
title: { type:String, required:true},
details: {type:String, required:true},
date: {type:Date, default:Date.now()}
}
)
mongoose1.model('ideas', IdeaSchema)
当我运行app.js时,没有错误发生。这怎么可能?我没有从idea.js文件中导出任何内容! app.js文件如何访问创意模型?
答案 0 :(得分:1)
require
已被缓存。所以,这:
let obj1 = require('an_object');
let obj2 = require('an_object');
将在第一行中加载对象,并在第二行中从缓存中返回相同的对象。即使这两个需求位于不同的文件中,也是如此。由于obj1
和obj2
是对同一对象的引用,因此如果obj1
被修改,obj2
也将被修改(因为它们是相同的)。
您没有从Idea导出任何内容,但这没关系; Idea的目的是修改猫鼬对象,而不返回任何内容。
简体:
// storage.js
exports.hello = 'Mumble mumble';
// mod_storage.js
let modding_storage = require('./storage');
modding_storage.hello = "Hello, world!";
// main.js
let main_storage = require('./storage');
require('./mod_storage');
console.log(main_storage.hello);
// => Hello, world!
mod_storage
更改了modding_storage
,但是modding_storage
与main_storage
是同一对象;换一个,都换。