节点要求-我听不懂这段代码

时间:2018-08-10 08:02:33

标签: node.js mongoose

我开始学习node.js和猫鼬,并且我不理解下面的代码。

我有2个文件:app.js和idea.js

app.js

const mongoose = require('mongoose')

require('./models/Idea')
const Idea = mongoose.model('ideas')

idea.js

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文件如何访问创意模型?

1 个答案:

答案 0 :(得分:1)

require已被缓存。所以,这:

let obj1 = require('an_object');
let obj2 = require('an_object');

将在第一行中加载对象,并在第二行中从缓存中返回相同的对象。即使这两个需求位于不同的文件中,也是如此。由于obj1obj2是对同一对象的引用,因此如果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_storagemain_storage是同一对象;换一个,都换。