开发小白,求助!我写了一个登陆函数getlogin.js,想等登陆成功后,给前端返回一个登陆成功的状态,然后前端从登陆页面跳转到首页,但是我用return返回的status,前端显示是{object object},而且内容是空的,登陆根本还没完成呢,前端已经接收到返回的响应
我想的是登陆成功的话返回一个状态status,前端判断这个状态是true就调到登陆页面,false就报错,我不知道我这个思路是不是太笨了,有没有其它更好的办法实现我的功能?目前怎么能让return等我的登录执行完再把正确的status返回呢?
getlogin.js
var SolidNodeClient = require('solid-node-client');
var AuthNode = require('@inrupt/solid-client-authn-node');
const client = new SolidNodeClient.SolidNodeClient();
const {
getSolidDataset,
createSolidDataset,
saveSolidDatasetInContainer,
getThing,
getStringNoLocale,
getUrlAll,
createThing,
setThing,
addUrl,addStringNoLocale,
saveSolidDatasetAt
} = require("@inrupt/solid-client");
const { SCHEMA_INRUPT, RDF, AS } = require("@inrupt/vocab-common-rdf");
var test111={
nssLogin:async function (req){
var status = false;
try{
let session = await client.login(
{
idp:req.body.webID,
username:req.body.name,
password:req.body.password
}
);
if(session.isLoggedIn){
console.log('loggedin!!!!!')
return status;
};
} catch(e){
console.log(e,"ERROR");
return status;
};
}
};
module.exports= test111;
post.js
const express = require("express");
const route = express.Router();
const test111 = require('../public/getlogin');
route.post("/",(req,res)=>{
var status = test111.nssLogin(req);
res.status(201).send({status});
});
module.exports = route;
前端接收到的status
改下代码
route.post("/",async (req,res)=>{
var status = await test111.nssLogin(req);
res.status(201).send({status});
});
异步调用问题,写在回调里
var status = test111.nssLogin(req);
给这句话加await
前端代码有问题,接收数据及状态应该通过回调函数实现。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632