我看了一下连接mongodb的示例代码,看到了一句看不懂的内容。
为什么在开发的情况下使用全局变量是安全的?
又为何没有投入生产?
您不需要理解代码。请只看评论部分。
import { MongoClient } from 'mongodb'
let client
let clientPromise
if (process.env.NODE_ENV === 'development') {
// In development mode, use a global variable so that the value
// is preserved across module reloads caused by HMR (Hot Module Replacement).
if (!global._mongoClientPromise) {
client = new MongoClient(uri, options)
global._mongoClientPromise = client.connect()
}
clientPromise = global._mongoClientPromise
} else {
// In production mode, it's best to not use a global variable.
client = new MongoClient(uri, options)
clientPromise = client.connect()
}
// Export a module-scoped MongoClient promise. By doing this in a
// separate module, the client can be shared across functions.
export default clientPromise
如果这只是为了高质量的代码,那么最好不要在开发环境中使用全局变量。
我不确定在生产环境中写入全局变量有什么问题。
它与在开发中使用“热模块替换”以提高开发效率有关。这不是您在生产环境中会做的事情。
在热模块替换中,模块级变量如client
and clientPromise
当模块被“热替换”时将被替换,但全局变量将被保留。
这是一个开发“技巧”,而不是在生产中要做的事情。
就我个人而言,我什至不会在开发中这样做,因为我宁愿在开发中运行尽可能接近生产的代码,除了必须不同的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)