【问题标题】:Getting an error stating that a declared variable is not defined收到错误声明声明的变量未定义
【发布时间】:2019-12-04 23:18:39
【问题描述】:

我正在尝试创建一个小型测试应用程序来学习编码,但在尝试在我创建的 mongodb 数据库中显示虚拟信息时卡住了。

我已经尝试了我能想到的一切,但无论我做什么,它都告诉我“客户”(这是一个具有已定义架构的变量)没有定义。如果它有任何区别,数据库位于一个单独的目录中,但我假设因为我可以创建我应该能够阅读。

如果有任何措辞不当或不清楚的地方,我深表歉意,大约一个月前,我从没有任何编程知识开始,所以我可能试图一次学习太多东西。

let express      = require("express");
let mongoose     = require("mongoose");
let bodyParser   = require("body-parser");
let app          = express();
app.set("view engine", "ejs");

mongoose.connect("mongodb://localhost:27017/customers");

let customerSchema = new mongoose.Schema({
  labName: String,
  labPhone: String,
  labAddress: String,
  labBranches: String,
  labEquipment: String
});

const Customer = mongoose.model("Customer", customerSchema);

app.get("/test", function(req, res) {
  Customer.find({}, function(err, allCustomers) {
    if(err){
      console.log(err)
    } else {
      res.render("customer", {customers:allCustomers});
    }
  })
});

app.listen(3000, function() {
  console.log("Server listening on port 3000");
});

预期的结果是将我在数据库中创建的少数客户粘贴到屏幕上,以确保我与数据库建立了有效的连接,但这是我得到的错误。

Error: Failed to lookup view "customer" in views directory "D:\CRM\NeurotronicsCRM\views"
    at Function.render (D:\CRM\NeurotronicsCRM\node_modules\express\lib\application.js:580:17)
    at ServerResponse.render (D:\CRM\NeurotronicsCRM\node_modules\express\lib\response.js:1012:7)
    at D:\CRM\NeurotronicsCRM\app.js:50:11
    at D:\CRM\NeurotronicsCRM\node_modules\mongoose\lib\model.js:4567:16
    at D:\CRM\NeurotronicsCRM\node_modules\mongoose\lib\query.js:4297:12
    at process.nextTick (D:\CRM\NeurotronicsCRM\node_modules\mongoose\lib\helpers\query\completeMany.js:35:39)
    at process._tickCallback (internal/process/next_tick.js:61:11)

我不明白为什么它引用客户并在视图目录中查找。我没有问题 Customer.create();并添加虚拟数据。

【问题讨论】:

  • 哪一行引发了这个错误?
  • 你正在使用 res.render("customer") 因为那一行你得到了错误
  • 使用 res.send({ allCustomers})
  • 我在哪里使用 res.send({allCustomer})?

标签: javascript html node.js mongodb ejs


【解决方案1】:

我发现在 res.render 中,回调的第一部分应该是我们正在加载的页面。我的错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2021-12-11
    • 2011-04-30
    相关资源
    最近更新 更多