【发布时间】:2021-01-06 06:32:57
【问题描述】:
我建立了一个使用 Express、Nodemon 和 Mongoose 运行的小应用程序。
几个小时前,它运行良好 - 我认为我当时没有更改任何代码。如果我有,那一定是不小心。
但是,每当我尝试访问我的本地主机以获取此特定应用程序时,它都不会加载。它只是处于这种加载状态。没有出现错误,控制台很清晰,并显示“在端口 3000 上运行”。
如果我尝试其他应用程序,它们在 localhost 上运行良好,所以一定是代码 - 但考虑到没有错误消息,我什至不知道从哪里开始。
这是我的代码:
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
var encrypt = require('mongoose-encryption');
require("dotenv").config();
const app = express();
mongoose.connect(process.env.MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true});
const SubmitDebtSchema = new Schema ({
balance: [{
balanceDate: Date,
newBalance: Number
}],
monthly: Number,
date: String,
autoBalance: String
});
const encKey = process.env.ENCKEY;
const sigKey = process.env.SIGKEY;
SubmitDebtSchema.plugin(encrypt, { encryptionKey: encKey, signingKey: sigKey, excludeFromEncryption: ['autoBalance'] });
const SubmitDebt = mongoose.model('submitdebt', SubmitDebtSchema);
app.get("/", async (req, res) => {
const debts = await SubmitDebt.find({ autoBalance: true });
debts.map(debt => {
console.log(debt.id);
const debtDate = parseInt(debt.date);
const finalDate = new Date(new Date().setDate(debtDate));
console.log(finalDate);
const todaysDate = new Date();
console.log(todaysDate);
const debtBalance = debt.balance[debt.balance.length - 1].newBalance;
console.log(debtBalance);
const debtRepayment = debt.monthly;
console.log(debtRepayment);
const updatedBalance = { balanceDate: new Date(), newBalance: debtBalance - debtRepayment };
console.log(updatedBalance);
if (todaysDate < finalDate) {
console.log("Balance shouldn't change.");
}
if (todaysDate >= finalDate) {
console.log("Balance should change");
SubmitDebt.findById(debt._id, (err, submitdebt) => {
if (!submitdebt) {
console.log("Unable to find entry to edit.");
}
else {
submitdebt.balance.push(updatedBalance);
submitdebt.save().then(submitdebt => {
console.log("Debt successfully updated.");
})
.catch(err => {
console.log("Debt unsuccessfully updated.");
});
}
});
}
res.send(debts);
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Lemio is running on port ${ PORT }`);
});
谁能发现我的 localhost 不适用于此应用的任何原因?感觉好像我遗漏了一些明显的东西!
【问题讨论】:
-
您的 mongo 服务正在运行吗?你让它闲置多久了?大约 2 分钟后可能会出现超时错误,这可能会提供一些见解 - 如果是这样,请将其粘贴到此处。如果您使用调试器逐步完成您的路线,它也可能很有用。
-
我已经弄清楚了 - res.send 在地图内部,所以它被窃听了。现在可以了,我已经把它分开了。