如何在node.js中的res.send内承诺?
我正在创build一个小链接缩短应用程序。 这是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不是一个函数。 这是因为它在承诺之内,但是我不确定如何解决问题,并保持代码的function。 我怎样才能得到回复发送?
谢谢!
这不是你需要的res
。 它被内部callback论证所覆盖。 您需要将内部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); }); });
这很可能是你的链接function重写expressjs的资源。 尝试在Link.find({}).exec((err, res) => {
重命名resvariablesLink.find({}).exec((err, res) => {
允许res.send(newSite);
从上面的范围使用resvariables。
- 通用error handling程序MEANJS,mongoose,温斯顿
- 用Mocha和ChaitestingExpress和护照OAuth2
- mongoose – 创build和插入数据到新的集合
- 服务器没有find任何匹配请求的URI节点的东西
- 为什么nodejs / cookie中的cookie签名使用sha1-hashing来比较签名?
- 来自node.js的MongoDB查询(express-coffeescript-mongodb)
- 在Express.js中为什么res.json()之后的代码仍然执行?
- iPhone / Android不会解雇用DNS实现的wifi登陆页面
- 如何从expressjs获取表单中选定的单选button值?