node.js - 导入数据库架构时 Express.js 类型错误
问题描述
在 MEAN 堆栈上创建一个小型 Web 应用程序,我正在将我的模式迁移到一个单独的“模型”目录。当模式在同一个app.js文件中定义时,一切正常;但是,当我将代码切换到一个单独的更模块化的文件并导入它时,我得到了这个错误:
TypeError: Player.find is not a function
at /Users/username/code/express/WebApp/v3/app.js:57:12
当它到达需要查找玩家的第一条路线时会发生此错误,并且在盯着它几个小时后我不太确定我错过了什么。
我的 app.js 文件:
var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
mongoose = require("mongoose"),
Player = require("./models/players")
const port = 3000;
mongoose.connect("mongodb://localhost/players", { useNewUrlParser: true, useUnifiedTopology: true });
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({extended: true}));
// PLAYER SCHEMA ORIGNALLY DEFINED HERE BUT NOW ATTEMPTING TO MOVE TO DIFF DIRECTORY & IMPORT
/*var playerSchema = new mongoose.Schema({
player: String,
position: String,
description: String
});
var Player = mongoose.model("Player", playerSchema);*/
app.get("/", function(req, res) {
res.render("landing");
});
app.get("/players", function(req, res) {
// Get all players from DB
Player.find({}, function(err, allPlayers){
if(err){
console.log(err);
} else {
console.log("We're good.");
res.render("players", {players: allPlayers});
}
});
});
和我试图导入的 player.js 文件:
var mongoose = require("mongoose");
var playerSchema = new mongoose.Schema({
player: String,
position: String,
description: String
});
// Compile into a model
module.exports = mongoose.model("Player", playerSchema);
上面的模式定义和模型定义在 app.js 文件中时完全可以正常工作,但在导入时就不行了。我在这里想念什么?在此先感谢您的帮助。
解决方案
我认为您的文件名在 require 语句中是错误的。它的
const Player = require('../models/player')
因为您的文件名是 player.js,而不是 player.js,并且如果您将 js 文件存储在模型文件夹中。请检查如何使用文件路径导航
/ 表示返回根文件夹,然后向前/向下遍历。
./ 表示从我们当前所在的文件夹开始并向前/向下遍历
../ 表示上一个目录,然后开始遍历。
你的后端也应该是这样的。 后端文件管理
推荐阅读
- java - 如何在Android中使用快捷方式传递数据
- python - 为什么我得到 UnboundLocalError 说在 Python 中分配之前引用了局部变量“参与者”?
- c - C 程序 int 变量值在读取 Char 值后发生变化
- ios - ios - 动画 subView 在其 superView 内的动作
- python - KMeans/RF 的多个作业中的一致随机状态
- postgresql - 如何使用 go 在 PostgreSQL 中传递条件参数?
- javascript - Ajax 获取外部 JS 而不加载它
- javascript - 反应引导模式上下文
- qt - Qt:在使用 QSignalMapper 连接动作时,可以使用 QStringList 作为函数参数吗?
- .htaccess - XAMPP mod_rewrite 对象未找到错误