node.js - 无法访问 Mongoose 保存回调中的变量

标签 node.js mongodb express mongoose callback

我正在尝试使用 mongoose 将数据保存到 mongodb,然后发送 json 响应。 这是我的代码

var userdata = {
  name: req.body.name,
  username: req.body.username,
  email: req.body.email,
  password: req.body.password,
};

var resdata = {};

var user = new User(userdata);
user.save(function (error) {
  if(error) {
    if (error.name === 'MongoError' && error.code === 11000) {
      resdata =  { 
        status: false,
        errortype: 'db-error',
        message:  "Duplicate Key Error"
      };
    } else {

      resdata =  { 
        status: false,
        errortype: 'db-error',
        message:  error.message
      };
    }
  } else {

    resdata =  {
      status: true,
      message:  "User Registered Successfully.." 
    };
  }
});
res.send(resdata);

问题是我无法在保存回调之外访问 resdata 的值。它始终返回 {}。我该怎么办?

最佳答案

您必须在查询的回调中将数据发送到客户端,这是一个示例:

user.save(function (error) {
    if(error) {
        if (error.name === 'MongoError' && error.code === 11000) {

            res.json({
                status: false,
                errortype: 'db-error',
                message:  "Duplicate Key Error"
            });

        } else {

            res.json({
                status: false,
                errortype: 'db-error',
                message:  error.message
            });
        }
    } else {

        res.json({
            status: true,
            message:  "User Registered Successfully.." 
        });

    }
});

关于node.js - 无法访问 Mongoose 保存回调中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48345808/

相关文章:

android - 如何接收客户端发送过来的数据

javascript - 使用 MEAN 堆栈进行身份验证,无需用户系统

javascript - Node : how to put objects as keys of hash object?

java - Jmeter 和 MongoDB 的问题 : detected unknown BSON type

javascript - node.js mongoError 未授权管理员执行命令

node.js - MEAN 堆栈中的验证......?

javascript - Express - 在中间件函数之间传递数据的更好模式

node.js - Openshift:如何在 node.js 应用程序中隐藏服务器 js 文件?

javascript - $ (Node+Express+Pug+JQuery) 上未定义

node.js - 用于时间跟踪的 MongoDB 架构设计