NodeJS+PostgreSQL项目测试POST接口报create属性未定义错误求解决
问题原因
报错TypeError: Cannot read property 'create' of undefined的核心是代码里的Tutorial变量值为undefined,所以调用它的create方法失败。
排查步骤
- 检查
../models/booking.model文件的导出逻辑,确认是否正确将tutorial模型挂载到了导出对象的tutorial属性上:
绝大多数该类问题都是属性名大小写不匹配导致,比如导出时用的是大写db.Tutorial,但引入时取的是小写db.tutorial,就会取不到值。 - 检查tutorial模型定义文件本身,确认调用
sequelize.define定义模型后,正确将模型实例导出,没有出现导出逻辑错误。 - 可以在引入db的代码后加一行
console.log(db)打印db对象的完整结构,确认里面是否存在tutorial属性,属性值是否为预期的Sequelize模型实例。 - 额外检查代码是否漏了函数包裹逻辑:目前贴出的代码里
req、res都没有外层函数接收,要确认这段逻辑确实是写在请求处理函数内部,没有出现变量作用域问题。
常见修复方案
如果是导出时属性名是大写的情况,把第二行代码改成:
const Tutorial = db.Tutorial;
即可解决问题。
内容的提问来源于stack exchange,提问作者Hasini
相关产品推荐
相关产品推荐

