使用module.exports导出以javascript文件编写的任何内容。如果从mongodb获取数据并且尚未写入静态文件,如何导出数据。 我已经看到只有静态数据被导出到其他模块而不是动态生成。
答案 0 :(得分:1)
您可以导出promise或返回承诺的函数:
// dynamicData.js
const dataPromise = new Promise((resolve, reject) => {
// load some data from mongo
db.fetchSomeData((error, result) => {
if(error) {
reject(error);
} else {
resolve(result);
}
});
});
function getData() {
return dataPromise;
}
module.exports = getData;
但是,您必须异步使用数据:
// someModule.js
const dynamicData = require("./dynamicData");
dynamicData().then((data) => {
// use your async data
});
或者,您可以在运行任何其他应用程序代码之前加载数据,缓存它并访问缓存的值:
let data = null;
function load() {
new Promise((resolve, reject) => {
// load some data from mongo
db.fetchSomeData((error, result) => {
if(error) {
reject(error);
} else {
data = result;
resolve(result);
}
});
});
}
function getData() {
return data;
}
module.exports = {load, getData};
启动时加载:
const dynamicData = require("./dynamicData");
dynamicData.load()
.then(() => {
// start application
const data = dynamicData.getData();
});
另一个选项可能是同步使用mongo数据库的mongo-sync模块。