【发布时间】:2020-09-22 00:15:18
【问题描述】:
我正在尝试查询托管在地图集(免费层)上的 MongoDB。我正在使用 nextjs 构建 api。我尝试在 vercel(以前称为 zeit)中托管它。该代码在本地运行良好。在部署到云(vercel)时,它不起作用。
var MongoClient = require('mongodb').MongoClient;
// serverless function for proverbs of the day
export default async (req, res) => {
return new Promise((resolve) => {
let databaseString = process.env.DATABASE_URL;
MongoClient.connect(
databaseString,
{ useUnifiedTopology: true },
async function (err, client) {
if (err) {
console.error(err);
throw err;
}
var db = client.db('database_name');
var start = new Date();
start.setHours(0, 0, 0, 0);
var end = new Date();
end.setHours(23, 59, 59, 999);
let result;
try {
// query 1 : doesn't works
result = await db
.collection('proverbs')
.findOne({ createdAt: { $gt: start, $lt: end } });
// query 2 : works
// result = await db.collection('proverbs').findOne({'id': 11 })
} catch (err) {
console.error(err);
} finally {
client.close();
}
res.send(result);
return resolve();
},
);
});
};
我尝试了两个查询:查询 1 和查询 2
本地 查询 1 和 2 都有效
在vercel云服务器中 查询 1 不起作用 查询2有效
我想让查询 1 工作。我哪里错了?
【问题讨论】:
-
这可能与运行您的函数的 Vercel 服务器上的时差有关。 “它不起作用”到底是什么意思,你没有得到任何结果?我会通过在生产环境中记录
start、end和result来开始调试,并与本地主机进行比较。 -
@MaximOrlov 问题是它没有返回任何结果。
标签: node.js next.js serverless vercel