【发布时间】:2021-03-29 05:27:35
【问题描述】:
我正在使用 mongoose、react 等创建一个 MERN 应用程序...我正在尝试使用 axios 创建一个发布功能以将新列表添加到我的数据库中。直到最后一切都很好。我的前端使用 axios 和路由将信息传递到后端,就在我执行 list.save() 之前,我什至 console.log 我正在保存的内容,一切看起来都很好。然后我将查看我的数据库,我的列表中的项目仅按他们的 ID 存储,我根本无法访问他们的 name 属性。我不知道为什么它只是没有出现。我会尝试提供我的代码,但所有内容都被分成不同的文件和文件夹供后端前端使用,所以我希望我的代码和解释有意义。
function addList(listTitle) {
const newList = {
title: listTitle
}
Axios.post("http://localhost:4000/todos/add", newList)
.then(res => console.log(res.data));
}
以上是我添加列表的帖子请求
Routes.route("/add")
.post(function(req, res) {
let list = new List({
title: req.body.title,
items: defaultItems
});
console.log(list.items)
list.save()
.then(list => {
res.status(200).json({"list": "list added successfully"})
})
.catch(err => {
res.status(400).send(err);
console.log(err);
});
});
这是我的完美路线,我可以记录所有内容,而且看起来不错。
[{"_id":"5fdcba16b08f7b1380853557","name":"Welcome to your todolist!"},{"_id":"5fdcba16b08f7b1380853558","name":"Hit the + button to add a new item."},{"_id":"5fdcba16b08f7b1380853559","name":"<-- Hit this to delete an item."}]
这是从上面的路由功能中的console.log记录的,这证明了项目有一个名字和一切。但是然后使用我的网站或使用邮递员,或者只是查看我的 mongodb 地图集集合,这就是我的列表项显示的内容。
{"_id":{"$oid":"5fdcbda6068da20c90ffc267"},"items":[{"$oid":"5fdcbd98068da20c90ffc264"},{"$oid":"5fdcbd98068da20c90ffc265"},{"$oid":"5fdcbd98068da20c90ffc266"}],"title":"anotha one","__v":{"$numberInt":"0"}}
我不知道为什么在我执行 list.save() 之前它会很好地显示我的项目及其名称,但是当我查看我的数据库时它就消失了。我不知道这是否有帮助,但我每次保存的项目都是相同的默认项目,是否有可能 mongoose/mongodb 每次都试图引用它们,因为它知道它们是相同的?我不知道这是否有助于或只是让情况更加混乱,但如果可能的话,请提供帮助。
这里要求的是我的两个架构。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const itemsSchema = new Schema({
name: String,
listId: String
});
module.exports = mongoose.model('Item', itemsSchema);
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const Item = require('./Item');
var listsSchema = new Schema({
title: String,
items: [{type: Schema.Types.ObjectId, ref: 'Item'}]
});
module.exports = mongoose.model('List', listsSchema);
【问题讨论】:
-
您可以发布
List的架构吗?看起来它可能缺少“名称”作为架构上的字段,默认情况下,猫鼬只会保存您在架构中拥有的字段。没有看到就不能确定。 -
刚刚添加到帖子中!
标签: node.js reactjs mongodb mongoose mongoose-schema