javascript - 我如何在 node.js 的 promise 中重新发送?

标签 javascript node.js mongodb express mongoose

我正在创建一个链接缩短器应用程序。这是 Express.js 的 POST 函数。我想发送一个包含新 url 和数据库中当前文档数的文档。这主要是为了确保每个网站都与一个唯一的短号码相关联。

app.post('/api/shorturl/new', (req, res) => {
  var body = _.pick(req.body, ['url']);         // url attached to body.url with lodash

  Link.find({}).exec((err, res) => {            // Link is a mongoose model
    var count = res.length;
    var newSite = new Link({ website: body.url, count });
    newSite.save((err) => {
      if (err) console.log(err);
    })
    res.send(newSite);
  });
});

当程序到达 res.send(newSite) 时,控制台显示 res.send 不是一个函数。这是因为它在 promise 范围内,但我不确定如何将其取出并保持代码正常运行。如何获得要发送的响应?

谢谢!

最佳答案

您需要的不是res。它被内部回调参数覆盖。您需要将内部 res 重命名为 _res 例如:

app.post('/api/shorturl/new', (req, res) => {
  var body = _.pick(req.body, ['url']);         // url attached to body.url with lodash

  Link.find({}).exec((err, _res) => {            // Link is a mongoose model
    var count = _res.length;
    var newSite = new Link({ website: body.url, count });
    newSite.save((err) => {
      if (err) console.log(err);
    })
    res.send(newSite);
  });
});

关于javascript - 我如何在 node.js 的 promise 中重新发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46857242/

相关文章:

MongoDB:导出不同的列值

javascript - JSreduce返回[object对象]

javascript - 如何解决同一页面多次出现api key错误

javascript - Node.js 读取并执行 Ruby 文件?

node.js - Node.js 和 Mongoose 中的补丁请求方法

javascript - Mongoose JS 查询全部返回 null 或空

c# - 无法从 'MongoDB.Driver.IMongoCollection<>' 转换为 'System.Collections.Generic.IEnumerable<>'

javascript - 如何在 1 个输入类型中调用 2 个函数

javascript - GA 作为 RequireJS 依赖项与 AdBlock EasyPrivacy 列表

bash - 在 mongo eval 命令中使用 bash 变量插入数据