我正在开发NodeJS / Express程序,并且试图获取POST请求以返回数据。当我返回直接字符串时,我得到正确的响应。
app.post("/DoStuff", function(req, res, Data) {
DoStuf.DoStuffFunction(req.body.UserID, function(label) {
Data = label
})
res.send({message: "Stuff"});
})
当我更改它以返回变量(仍然是字符串)时,它仅返回“ {}”。
app.post("/DoStuff", function(req, res, Data) {
DoStuf.DoStuffFunction(req.body.UserID, function(label) {
Data = label
})
res.send({message: Data});
})
即使我使Data =“ foo”,响应也是“ {}”
答案 0 :(得分:3)
您需要从回调函数内部发送。在您的代码中,$buildSource = 'M:\build\'
$acctKey = ConvertTo-SecureString -String "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential -ArgumentList
"Azure\wserverBuild", $acctKey
New-PSDrive -Name M -PSProvider FileSystem -Root "\\wserverBuild.file.core.windows.net\build" -Credential $credential -Persist
Copy-Item 'M:\build\' -Destination 'C:build' -Recurse
与res.send
的回调无关
DoStuffFunction
答案 1 :(得分:1)
好像您的DoStuffFunction
是异步的。因此,只需在回调中移动res.send(..)
就可以了
app.post("/DoStuff", function(req, res, Data) {
DoStuf.DoStuffFunction(req.body.UserID, function(label) {
res.send({message: label});
})
})
答案 2 :(得分:1)
当我更改它以返回变量(仍然是字符串)时,它仅返回“ {}”。
这是因为DoStuf.DoStuffFunction(){}
是异步。
当您使用stuff
作为值时,它起作用的原因是因为该操作是同步的。在发送回复之前,您将拥有自己的价值。
如果仅在DoStuffFunction()完成后才发送响应 ,请将response.send()
放在回调中。
'use strict';
app.post("/DoStuff", function(req, res, Data) {
DoStuf.DoStuffFunction(req.body.UserID, function(label) {
res.send({message: label}); //you can send label's value directly
});
});