initializeDb( db => {
// internal middleware
app.use(middleware({ config, db }));
// api router
app.use('/api', api({ config, db }));
app.server.listen(process.env.PORT || config.port, () => {
console.log(`Started on port ${app.server.address().port}`);
});
});
https://github.com/developit/express-es6-rest-api/blob/master/src/index.js#L27
以上情况,db似乎突然冒出来,要查看上下文,请点击链接直接到源代码。
我在此处模拟了相同的方式(https://codepen.io/adamchenwei/pen/vWWmXa)db
甚至无法访问。那个db
究竟在那个特定的样板中做了什么?
答案 0 :(得分:2)
db
是initializeDb
代码实际上看起来像这样
'use strict';
initializeDb(function (db) {
// internal middleware
app.use(middleware({ config: config, db: db }));
// api router
app.use('/api', api({ config: config, db: db }));
app.server.listen(process.env.PORT || config.port, function () {
console.log('Started on port ' + app.server.address().port);
});
});
答案 1 :(得分:1)
以上情况,数据库似乎无处不在
它是您传递给initializeDb
的函数的参数。 initializeDb
presumable创建一个新的数据库实例,并将该实例传递给您传递给它的函数。
这就是函数的工作原理,它们接受在调用时提供的参数。仅在您的示例中,调用该函数的您不是另一个函数(initializeDb
)。
采用回调的函数的简化示例:
function answerToEverything(callback) {
callback(42);
}
answerToEverything(answer => console.log(answer));