异步函数 findOne 返回"undefined"



我创建了一个函数,根据sub参数检查数据库中是否存在用户。我希望我的函数给我一个truefalse值。

前端

......
async function exist(sub) {
const result = await InfoDataService.get(sub)
alert(result.sub);
}      
......

控制器

// Find a User with sub
exports.findOne = (req, res) => {
const sub = req.params.sub;

User.findOne({sub})
.then(data => {
res.send(data);
})
.catch(err => {
res.status(500).send({
message: "Error retrieving User with id=" +sub 
});
});
};

路线

module.exports = app => {
const users = require("../controllers/user.controller.js");
const router = require("express").Router();

// Retrieve
router.get("/:sub", users.findOne);

app.use('/api/users', router);
};

InfoDataService:

import http from "../http-common.js";

const get = sub => {
return http.get(`/users/${sub}`);
};
export default {
get,
};

http common

import axios from "axios";

export default axios.create({
method: 'GET',
baseURL: "http://localhost:8080/api",

});

如果不是result.sub,我只使用result,我可以检索对象,但如果我试图访问.sub属性,我得到"0";未定义";。

我注意到另一件可能相关的事情:post的路径是api/users,而get的路径是api/users/:sub。通过检查网络,我发现异步功能向api/users/undefined发出了请求。错误在哪里?

不确定User.findOne({sub})是否正确,是否应该是where子句?{ where: sub}

最新更新