express中数据插入成功之后,如何返回值?

发布于 2022-09-05 04:41:02 字数 1775 浏览 18 评论 0

我想在mongoose插入成功后返回一个json,并以res.json(data)的形式发送给前端,但insert()函数这样写不对?为什么
insert.js

var User = require("../mongo/user.js");

function insert(data) {
    console.log("传入的data",data)
    let result={}
    var user = new User({
        username : data.username,                 //用户账号
        userpwd: data.psw,                            //密码
        // userage: 37,                                //年龄
        logindate : new Date()                      //最近登录时间
    });

    let saveStatue=user.save(function (err, res) {
        console.log("userSave")

        if (err) {
            console.log("Error:" + err);
            result={msg:"success"}
            //result=res
        }
        else {
            console.log("插入成功")
            console.log("Res:" + res);
            result={msg:"success"}
            //result=res
        }

    });
    console.log("saveStatue",saveStatue)
    // 
    return result  //  我想insert这个函数返回一个插入成功或失败的json
}

// insert();
module.exports=insert

app.js

我的insertResult想得到一个插入成功或失败的json,但是这个执行结果好想是个promise对象

app.get("/wechat/login",function(req,res,next){
  console.log(123)
  let user=req.query
  console.log("带过来的参数",user)
  // console.log(insert.toString())
  if(user){
    res.set({
      "Access-Control-Allow-Origin": "*"
      ,"Access-Control-Allow-Methods": "POST,GET"
      ,"Access-Control-Allow-Credentials": "true"
    });

    // let findResult=find(user.username)
    // console.log("上面是find结果",findResult)

   let insertResult=insert({
          username:user.userName,
          psw:user.psw
    })
    console.log('insertResult',insertResult)
    res.json({
      status:1
    })
  }
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月下客 2022-09-12 04:41:02

var User = require("../mongo/user.js");

function insert(data, callback) {

console.log("传入的data",data)
let result={}
var user = new User({
    username : data.username,                 //用户账号
    userpwd: data.psw,                            //密码
    // userage: 37,                                //年龄
    logindate : new Date()                      //最近登录时间
});

let saveStatue=user.save(callback);
console.log("saveStatue",saveStatue)
// 

// return result // 我想insert这个函数返回一个插入成功或失败的json
}

// insert();
module.exports=insert

app.get("/wechat/login",function(req,res,next){
console.log(123)
let user=req.query
console.log("带过来的参数",user)
// console.log(insert.toString())
if(user){

res.set({
  "Access-Control-Allow-Origin": "*"
  ,"Access-Control-Allow-Methods": "POST,GET"
  ,"Access-Control-Allow-Credentials": "true"
});

// let findResult=find(user.username)
// console.log("上面是find结果",findResult)

let insertResult=insert({

      username:user.userName,
      psw:user.psw
}, (err, data ) => {
    if (err) {
        console.log(err)
    }
    console.log('data',data)// data 就是mongoose的回调
 })
console.log('insertResult',insertResult)
res.json({
  status:1
})

}
});

这样就可以实现你想要的结果了

花海 2022-09-12 04:41:02

你的问题原因在save调用传入的function是异步的,所以你的result还没有被赋值就返回了,你需要将res返回数据的语句放入save的函数里面,这是一个相关例子,原来写的:

var express=require('express');
var router=express.Router();
var client=require('../redis/rediscon.js');
var UserModel=require('mongoose').model('User_Model');

router.post('/checklogin',(req,res,next)=>{
    
    client.get(req.body.tokenId,(err,reply)=>{
        if(err){
            res.end(err);
        }else{
            if(reply){
                var ret=UserModel.findOne({hash:reply});
                ret.exec(function(err,result){
                    res.send(JSON.stringify(result));
                });
            }else{
                res.send(JSON.stringify({hasLogin:false}));
            }
        }
    });
});


module.exports=router;


~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文