gpt4 book ai didi

json - module.exports = { Mongoose , models : { . .. } } 是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:08 25 4
gpt4 key购买 nike

我正在学习Node/Mongo,现在我可以理解这样的代码,

module.exports = mongoose.model('User', UserSchema);

我无法理解以下内容,

module.exports = { Mongoose, // var Mongoose = require('mongoose');
models: {
user: require('./schemas/user.js'),
room: require('./schemas/room.js')
}
};

我可以看到作者想要导出 Mongoose 和模型。但是导出的对象是JSON对象吗?其中的Mongoose是键还是值? JSON 是否允许有无值的键或无键的值?还是我完全错了?

最佳答案

首先,澄清一下术语:JSON 是一个字符串,而不是一个对象,因此它是 JavaScript Object Notation 的缩写。您所拥有的通俗地称为 POJOPlain Old Javascript O 对象。他们是不同的。

其次,让我们分解一下导出语句:

{ Mongoose, //...

这是 object initialization using shorthand property names 的 ES6 (ES2015) 语法。基本上,如果变量名称 (var foo = 'hi') 与对象属性名称匹配,则初始化可以简单地为 { foo },与 { foo: foo } 相同。

关于导出的内容,它将是一个 POJO,相当于:

{
Mongoose: require('mongoose'),
models: {
user: require('./schemas/user.js'),
room: require('./schemas/room.js')
}
};

奖励:由于 Node 维护所需模块的缓存,Mongoose 使用它作为所有声明的模型和模式的缓存机制。如果在一个文件中导入 Mongoose 并创建模型,则另一个模块将能够导入 Mongoose 并通过 Mongoose 的缓存访问该模型。

// a.js
const mongoose = require('mongoose');
const FooModel = new mongoose.model('Foo', {});

// b.js
const aMod = require('./a.js'); // Import here only to declare model.
const mongoose = require('mongoose');
const FooModel = mongoose.model('Foo'); // Same model a.js

关于json - module.exports = { Mongoose , models : { . .. } } 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448326/

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