Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在更新后立即从MySQL检索信息?_Mysql_Node.js_Express_Sequelize.js - Fatal编程技术网

如何在更新后立即从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,因为我们没有使用结果变量()。