node.js - NodeJS - 控制器没有将 JSON 返回到路由
问题描述
所以我创建了一个控制器来创建用户配置文件,一切正常,它在数据库中创建它,但我无法得到任何响应......起初我认为这是我的路线,但经过一些测试后添加在控制器中的方法早期的测试响应,它返回正常。我不确定我错过了什么,就像我说它进入数据库一样。
这是我的 Controller.js
module.exports = function(req, res) {
var mod = {
createMerchantUser(req, res) {
var merchantDescription = 'Merchant for ' + req.body.email;
////////// If I add a test Response HERE it returns perfectly
///////// return{ message: "Testing response here..." }
// ANYTHING BELOW GETS CREATED IN DATABASE BUT DOESN'T PROVIDE A RESPONSE
var merchant = stripe.customers.create({
email: req.body.email,
description: merchantDescription
}, function(err, customer) {
var new_merchant_user = new MerchantUser({
email: req.body.email,
password: req.body.password,
accountConfirmed: false,
stripeID: customer.id
});
new_merchant_user.save(function(err, merchantUser) {
if (err) {
if (err.name === 'MongoError' && err.code === 11000) {
// Duplicate username
return res.status(500).send({ success: false, message: 'An account with this email already exists!' });
}
}
res.json({
data: {
merchantUser
}
});
});
});
}
}
return mod;
};
这是我的 Route.js
app.post('/api/createMerchUser', (req, res) => {
return res.json(merchantUsersController.createMerchantUser(req, res))
})
更新:
只是为了更多的上下文。以下是我过去使用的不同方式,效果很好。它在创建对象后返回它。这样做的问题是我不能在不同的控制器中调用方法,因此我不得不使用上面的方法......
控制器.js
exports.create_merchant_user = function(req, res) {
var merchantDescription = 'Merchant for ' + req.body.email;
var merchant = stripe.customers.create({
email: req.body.email,
description: merchantDescription
}, function(err, customer) {
var new_merchant_user = new MerchantUser({
email: req.body.email,
password: req.body.password,
accountConfirmed: false,
stripeID: customer.id
});
new_merchant_user.save(function(err, merchantUser) {
if (err) {
if (err.name === 'MongoError' && err.code === 11000) {
// Duplicate username
return res.status(500).send({ success: false, message: 'An account with this email already exists!' });
}
}
res.json({
data: {
merchantUser
}
});
});
});
};
路由.js
app.route('/api/merchantUser')
.post(merchantUsers.create_merchant_user);
解决方案
试试下面的代码:
return res.status(200).type('application/json').send({
"statusCode": 200,
"statusMsg": "success,
"data": merchantUser
});
推荐阅读
- c# - 在 datagridview1 中选择特定用户时在 datagridview2 中显示订单
- php - laravel 会在发送之前对控制器中返回的数据进行一些处理吗?
- apache - Apache seg 错误 krb5int_key_delete 断言 destructors_set[keynum] == 1 失败
- php - 随机数据的 MD5 哈希列表看起来不一致 (PHP)
- html - 关于fixed-navbar + text-align right CSS/HTML的问题
- function - 使用 argv 和 argc 向函数发送参数
- javascript - 如何按“键”与适当标题下方列出的关联数据进行分组
- php - 如何允许用户添加脚本,如 fb 像素代码、分析跟踪代码、自定义脚本……并保护平台免受攻击
- javascript - 将包含多个数组的 JSON 字符串转换为 C# 数组的问题
- ios - iOS iCloud 钥匙串 2 警报