Javascript 邮递员在向特快路线发送请求时挂起(继续加载)
我创建了这个api,在两个用户之间生成连接请求(类似于linkedin或任何其他社交媒体) 这里我首先检查提供的用户标识是否有效。 我使用的是一个模型用户,它为我提供了通过findByUsername()函数检查用户是否存在userid 我分别检查了每个模型,结果都正常。但在上述路线上发送请求时,邮递员继续加载。请让我知道解决方案 按用户名模式查找: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
/**
* 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;