Node.js 函数返回空[对象承诺]
我认为这个问题与async有关,但我无法res.send它只是作为[object Promise]发送的布尔值,当我在前端JSON.stringify它时,它是空的Node.js 函数返回空[对象承诺],node.js,express,Node.js,Express,我认为这个问题与async有关,但我无法res.send它只是作为[object Promise]发送的布尔值,当我在前端JSON.stringify它时,它是空的 const express = require("express"); var router = express.Router(); var ObjectId = require("mongoose").Types.ObjectId; const mongoose = require("mongoose"); var crypto
const express = require("express");
var router = express.Router();
var ObjectId = require("mongoose").Types.ObjectId;
const mongoose = require("mongoose");
var crypto = require("crypto");
var { User } = require("../models/users");
router.get("/", (req, res) => {
// This logs "[object Promise] Please see here"
console.log(go().then(function(result) {
return result
}) + ' Please see here');
// This logs true
go().then(function(result) {
console.log(result)
});
// This returns [object Promise] to front end which is empty
return res.send((go().then(function(result) {
return result
})));
async function go() {
doesUserExist = await User.exists({ email: req.query.email });
return doesUserExist;
}
});
module.exports = router;
因为go是一个异步函数,所以我相信您需要等待调用它的任何时候。大致如下:
const express = require("express");
var router = express.Router();
var ObjectId = require("mongoose").Types.ObjectId;
const mongoose = require("mongoose");
var crypto = require("crypto");
var { User } = require("../models/users");
router.get("/", async (req, res) => {
// This logs "[object Promise] Please see here"
console.log(await go().then(function(result) {
return result
}) + ' Please see here');
// This logs true
go().then(function(result) {
console.log(result)
});
// This returns [object Promise] to front end which is empty
return res.send((go().then(function(result) {
return result
})));
async function go() {
doesUserExist = await User.exists({ email: req.query.email });
return doesUserExist;
}
});
module.exports = router;
移动
res.send
到里面然后
。啊,显然,我不知道为什么我没有想到这一点