Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
Javascript 邮递员在向特快路线发送请求时挂起(继续加载)_Javascript_Mysql_Node.js_Express_Postman - Fatal编程技术网

Javascript 邮递员在向特快路线发送请求时挂起(继续加载)

Javascript 邮递员在向特快路线发送请求时挂起(继续加载),javascript,mysql,node.js,express,postman,Javascript,Mysql,Node.js,Express,Postman,我创建了这个api,在两个用户之间生成连接请求(类似于linkedin或任何其他社交媒体) 这里我首先检查提供的用户标识是否有效。 我使用的是一个模型用户,它为我提供了通过findByUsername()函数检查用户是否存在userid 我分别检查了每个模型,结果都正常。但在上述路线上发送请求时,邮递员继续加载。请让我知道解决方案 按用户名模式查找: /** * findByUsername * * Finds a user by username * @param {string} us

我创建了这个api,在两个用户之间生成连接请求(类似于linkedin或任何其他社交媒体)

这里我首先检查提供的用户标识是否有效。 我使用的是一个模型用户,它为我提供了通过findByUsername()函数检查用户是否存在userid

我分别检查了每个模型,结果都正常。但在上述路线上发送请求时,邮递员继续加载。请让我知道解决方案

按用户名模式查找:

/**
 * findByUsername
 * * Finds a user by username
 * @param {string} username username whose detail needed to find
 */
User.findByUsername = (username) => {
  return new Promise((resolve, reject) => {
    const query = `
            SELECT 
                u.*, p.* 
            FROM user u INNER JOIN profile p 
            ON u.username = p.username 
            WHERE u.username = ?
        `;
    sql.query(query, username, (err, res) => {
      if (err) {
        console.log(`Error: ${err}`);
        return reject(err);
      }
      if (!res.length) {
        const newError = new Error(`User with username ${username} not found`);
        newError.status = 404;
        return reject(newError);
      }
      console.log(`Found user: `, res);
      resolve(res[0]);
    });
  });
};
连接构造函数:

// constructor
const Connects = function (connect) {
  this.userId = connect.userId;
  this.friendId = connect.friendId;
  this.status = 1;
};
创建连接的方法:

/**
 * create
 * * Creates a new connection request between two users
 * @param {object} newConnect A connection object
 */
Connects.create = (newConnect) => {
  console.log(newConnect);
  return new Promise((resolve, reject) => {
    const query = "INSERT INTO connects SET ?";
    sql.query(query, newConnect, (err, res) => {
      if (err) {
        console.log(`Error: ${err}`);
        return reject(err);
      }
      const response = { id: res.insertId, ...newConnect };
      console.log(`Created connect: `, response);
      resolve(response);
    });
  });
};

这是路线:

// TODO: Send request
router.post(
  "/request",
  [body("from").not().isEmpty().escape(), body("to").not().isEmpty().escape()],
  (req, res, next) => {
    // Finds validation errors and return error object
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }
    const { from, to } = req.body;

    if (from === to) {
      const newError = new Error("Equal input is not allowed");
      newError.status = 400;
      next(newError);
    } else {
      User.sendRequest(from, to)
        .then((data) => res.json(data))
        .catch((err) => next(err));
    }
  }
);
邮递员行为:

您没有向我们展示API的快速路由处理程序。从你的邮递员hang看来,你的路线管理员从未打过类似的电话

res.json(whatever).status(200).end()

在你所有的承诺都解决之后。邮递员正在耐心等待node express服务器的响应或超时。

您没有向我们展示API的快速路由处理程序。从你的邮递员hang看来,你的路线管理员从未打过类似的电话

res.json(whatever).status(200).end()
在你所有的承诺都解决之后。邮递员正在耐心等待node express服务器的响应或超时。

问题已修复:
说起来很尴尬,但是的,我犯了那个错误。
在sendRequest方法中,我定义了常量变量userId和friendId,并将其修改为userId=data.id.
我使用let关键字将常量变量更改为局部变量

更改:
发件人:

致:

但是,我想解释一下为什么我在尝试更改常量变量时没有在控制台上出错?这些事情是在承诺中发生的吗?

问题已解决:
说起来很尴尬,但是的,我犯了那个错误。
在sendRequest方法中,我定义了常量变量userId和friendId,并将其修改为userId=data.id.
我使用let关键字将常量变量更改为局部变量

更改:
发件人:

致:


但是,我想解释一下为什么我在尝试更改常量变量时没有在控制台上出错?承诺会发生这种情况吗?

我也添加了路由,请检查。您可能应该使用调试器或console.log行,以确保您的
res.json()
行在服务器中实际运行。我想不是。是的,我正在使用控制台日志。实际发生的情况是,对于第一个id(从),console正在打印响应,但在打印响应之后,它也不会继续运行。请检查。您可能应该使用调试器或console.log行,以确保您的
res.json()
行在服务器中实际运行。我想不是。是的,我正在使用控制台日志。实际发生的情况是,对于第一个id(来自),控制台正在打印响应,但在这之后就不再进行了
const userId = 0;
const friendId = 0;
let userId = 0;
let friendId = 0;