gpt4 book ai didi

javascript - 用户保存未保存且没有错误

转载 作者:行者123 更新时间:2023-12-02 16:49:18 25 4
gpt4 key购买 nike

我有以下用于更新待办事项的代码:

router.post('/edit/todo', function(req, res) {
var post = req.body,
newTitle = post.title,
newDetails = post.details.replace(/\n/g, '<br>'),
// _id = post._id;
index = post.index;

console.log('req.user.todos[index] = ' + JSON.stringify(req.user.todos[index])); // old details

req.user.todos[index].title = newTitle;
req.user.todos[index].details = newDetails;

req.user.save(function(err) {
if (err) return console.log(err);
else {
console.log('req.user.todos[index] = ' + JSON.stringify(req.user.todos[index])); // new details
res.redirect('/');
}
});
});

router.get('/', function(req, res) {
var todos = req.user.todos; // old details
}

这是用户架构:

var UserSchema = new mongoose.Schema({
name: {
type: String,
required: true
},

email: {
type: String,
unique: true,
required: true
},

password: {
type: String,
required: true
},

// keeps the tasks like homework and projects
// each todo is made of a title, and details
todos: [],

// keeps the test
// each test is made of a subject and a date
// each date is made up of a month and a day
tests: [],

// keeps the schedule
// used by tomorrow tile
schedule: { },

// links for school related sites
// each link is made up of a name and an href
links: []
});

这真的很奇怪,因为在保存阶段它没有错误,并显示了新的详细信息,但看起来它实际上并没有保存用户。
另外,我有几乎相同的方法来创建待办事项(只是使用 push 而不是输入值)并且效果很好。

最佳答案

由于您没有定义 schema 中 todo 数组包含的内容,因此您需要通过调用 markModified 来告诉 Mongoose 何时修改了其元素中的数据。 :

req.user.todos[index].title = newTitle;
req.user.todos[index].details = newDetails;
req.user.markModified('todos');

关于javascript - 用户保存未保存且没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26814801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com