如何在更新后立即从MySQL检索信息?
我有一个前端,显示从数据库中获取的任务列表和一个允许用户更新的表单。我想在添加新任务后使用新列表更新前端。我尝试在创建查询之后执行搜索查询,并将信息发送到前端,但它返回以前的值如何在更新后立即从MySQL检索信息?,mysql,node.js,express,sequelize.js,Mysql,Node.js,Express,Sequelize.js,我有一个前端,显示从数据库中获取的任务列表和一个允许用户更新的表单。我想在添加新任务后使用新列表更新前端。我尝试在创建查询之后执行搜索查询,并将信息发送到前端,但它返回以前的值 app.post( "/addTask", passport.authenticate("jwt", { session: false }), (req, res) => { Task.create({ description: req.body.data,
app.post(
"/addTask",
passport.authenticate("jwt", { session: false }),
(req, res) => {
Task.create({
description: req.body.data,
user_id: req.user.dataValues.user_id
}).then(
Task.findAll({
where: { user_id: req.user.dataValues.user_id }
}).then(data => {
console.log("HERE: ", data); // logs [], initial value when no tasks
res.status(200).json(data);
})
);
}
);
你能这样试试吗
app.post(
“/addTask”,
passport.authenticate(“jwt”{session:false}),
(请求、回复)=>{
Task.create({
描述:req.body.data,
用户id:req.user.dataValues.user\u id
})。然后(结果=>{
Task.findAll({
其中:{user\u id:req.user.dataValues.user\u id}
})。然后(数据=>{
console.log(“此处:”,数据);//logs[],没有任务时的初始值
res.status(200).json(数据);
});
});
}
);
理论上更倾向于解释它的人可能会解释得更好……但根据我的观察,then()
不会等到create()
完成,除非您传递一个参数。如下图所示,如果将新任务从create()
传递到then()
,新创建的任务将出现在findall()
结果中
app.post(
"/addTask",
passport.authenticate("jwt", { session: false }),
(req, res) => {
Task.create({
description: req.body.data,
user_id: req.user.dataValues.user_id
}).then(
newTask=> { // added *************
Task.findAll({
where: { user_id: req.user.dataValues.user_id }
}).then(data => {
console.log("HERE: ", data); // logs [], initial value when no tasks
res.status(200).json(data);
})
} // added ***********************
);
}
);
它成功了!我不需要在回调中指定参数,所以我使用了
()=>Task.findAll…
@albertoviches yes,因为我们没有使用结果变量()。