收到一条错误消息,指出未定义声明的变量

时间:2019-07-26 15:22:11

标签: javascript html node.js mongodb ejs

我正在尝试创建一个小的测试应用程序以学习编码,并且在尝试在我创建的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)

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

1 个答案:

答案 0 :(得分:0)

我能够弄清楚,在res.render中,回调的第一部分应该是我们正在加载的页面。我的错。