【发布时间】:2018-09-19 12:21:21
【问题描述】:
您好,我正在尝试为我的 web 应用设置推送通知。
我得到了我应该得到的订阅。
它会正确地将其保存到我的数据库中。
如果数据库中只有一个用户,它会发送我的通知
我想发送给不止一个用户:)
我正在使用:
Vue.js(框架)
Axios(发布)
node.js (api)
mongoDB(数据库)
这是我发给 API 的帖子。
await axios({
method: 'post',
url: 'API',
data: {
subscription: JSON.stringify(subscription),
storeId: storeId
},
headers: {
'Content-Type': 'application/json'
}
})
它注册了我的帖子,但随后我收到了抛出错误。 即“发送后无法设置标题。”
我在我的应用程序中使用 CORS,如下所示:
const cors = require('cors')
const app = express();
app.use(bodyParser.json());
app.use(cors())
app.use(morgan('combined'))
我从我的网站处理帖子的方式是找到我的订阅,然后映射并说出 foreach 订阅
网络推送
//subscribe routes
app.post('/pushNotification', (req, res) => {
var storeId = req.body.storeId
res.setHeader('Content-Type', 'application/json');
console.log(storeId)
if (req.body.storeId != null) {
console.log('Test1')
//get pushSubscription object
//create payload
const payload = JSON.stringify({ title: 'push test' })
Push.find({
"storeId": storeId
},
'subscription', function(error, response) {
console.log('Test2')
console.log(response)
response.map(item => {
res.status(201).json({});
console.log('Test3')
var subscription = item.subscription
console.log(subscription)
webpush.sendNotification(subscription, payload).catch(err => console.error(err));
})
})
} else {
res.send("failed")
}
})
正如我在某处所读到的那样,我没有设置标题或正确的东西。我在教程和其他东西中使用过cors。
所以它就像是因为迭代错误而崩溃。 但我不知道怎么做。
错误信息:
提前致谢
【问题讨论】:
-
您收到此错误是因为
res.status(201).json({})已经设置了标头并将响应发送回客户端,但webpush.sendNotification也尝试设置标头。
标签: javascript node.js api push-notification