我正在创建一个应用程序,现在我正在开发一个能够接收用户输入并将其存储在数据库中的功能。我在其他项目上做过很多次,但遇到了一个我无法解决的问题。
到目前为止,当用户输入他们的信息并点击回车键时,数据将被发送到后端,而start的数据将被发送到endpoint。我用“创建”功能设置了一个控制器。具体如下:
const db = require('../database/models');
module.exports = {
// create: function(req, res) {
// console.log('hit controller');
// db.Listing
// .create(req.body)
// .then(dbModel => res.json(dbModel))
// .catch(err => res.status(422).json(err));
// }
create: function(req, res) {
console.log('!!!!HERE:CONTROLLERS' + req.body.receiver);
db.Listing
.create(req.body)
.then(function(dbModel) {
console.log(dbMessage);
res.json(dbModel)
})
.catch(function(err) {
res.json(err);
});
}
};
我有两个函数,因为我尝试了一些不同的东西,每个都有相同的结果。一旦它到达这一点,我得到以下错误(命中控制器只是创建函数中的console.log):
'hit controller'
TypeError: Cannot read property 'create' of undefined
在浏览器上的控制台中,我还收到以下错误:xhr。js:178员额http://localhost:3000/listing/500(内部服务器错误)saveListing错误错误:请求失败,状态代码为500,位于XMLHttpRequest的结算(结算.js:18)处的createError(createError.js:16)处。手动加载(xhr.js:77)
这是来自我的地址列表页面:
handleFormSubmit = (event) => {
event.preventDefault();
console.log('hit');
console.log("state in handle submit", this.state.title)
if (
this.state.title &&
this.state.description &&
this.state.duration &&
this.state.datesAvailable &&
this.state.tags
) {
API.saveListing({
title: this.state.title,
description: this.state.description,
duration: this.state.duration,
datesAvailable: this.state.datesAvailable,
tags: this.state.tags
})
.then(res => console.log('success'))
.catch((err) => console.log("err from saveListing", err));
}
};
这是我的模型文件:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var ListingSchema = new Schema({
// `title` is of type String
title: {
type: String,
required: true
},
description: {
type: String,
required: true
},
duration: {
type: String,
required: true
},
datesAvailable: {
type: String,
required: true
},
hashtags: {
type: Array,
required: true
}
});
var Listing = mongoose.model("Listing", ListingSchema);
module.exports = Listing;
所以重新定义:当用户点击submit按钮时,表单运行一个函数,点击API和它需要的路由,前往服务器,然后是post请求的路由,然后是post的create函数的llistingController,同时从我的清单DB模型中提取。一旦到达create函数,它就会弹出。这些数据显然没有定义,但我不知道为什么,也弄不明白。
我觉得我遇到的可能是最基本的,但我一辈子都搞不清楚。此外,如果有人知道一些坏屁股资源来增加我的蒙戈/快递/反应知识,我很乐意看到它。
您正在从模型文件导入db
,但该文件正在导出列表
。导入列表
并使用列表。创建
而不是
db。表册创建
。
匿名用户
正如塞内卡所说,我改变了db。表册在我的控制器中创建一个列表。创造然后我要求在控制器文件中列出精确的文件,而不仅仅是models文件夹('const Listing=require('../database/models/Listing');'而不是“const Listing=require(“../database/models”);”。
这就是我所需要的!
相关问题
- MongoDB计数,最小,最大,平均使用带有对象列表的字段进行聚合
- Mongoose(mongoDB)批量插入?
- 使用mongoDB查询过大问题
- MongoDB和JS之间相同的日期格式,但它们不相等?
- 在MongoDB中将字符串日期转换为时间戳
- 使用djongo和pymongo连接django mongoDB
- 带有聚合管道的文本搜索-MongoDB/PHP
- MongoDB聚合
- 使用变量构建嵌套对象的动态MongoDB/Mongoose查询
- MongoDB-查询的奇怪行为
- 如何在MongoDB中检索每个文档的最后更新时间?
- 如何从mongoDB查询中获取表结果
- 摩洛哥/MongoDB检索具有相同元素的查询
- MongoDb:无法优化管道:原因是:无法从BSON类型的javascript转换为Date
- 如何仅当文档在MongoDB中具有特定字段时才投影对象?
- MongoDB返回键匹配条件的数组值
- 在MongoDB中找到未知的钥匙
- MongoDB查询不返回结果
- MongoDB搜索具有一系列键名的子文档?[重复]
- MongoDB从另一个集合中的字段查找集合中的文档