reactjs - React POST 方法返回空数组而不是对象
问题描述
你好堆栈社区,
我有一种情况需要您的经验和观点。我正在尝试解决这个问题 2 天,但我无法完成。
当我尝试添加一个新对象(称为订阅)时,post 方法返回一个空数组而不是一个对象。我使用 MongoDB。以下是代码片段:
订阅模式:
import mongoose from 'mongoose';
const subscriptionSchema = new mongoose.Schema({
name: { type: String, required: true },
monthlyPrice: { type: Number, default: 0, required: true },
yearlyPrice: {type: Number, default: 0, required: true},
copyType: { type: String, required: true},
seoType: { type: String, required: true},
personalizationType: { type: String, required: true},
});
const subscriptionModel = mongoose.model('Subscription', subscriptionSchema);
export default subscriptionModel;
订阅路线:
router.get('/', async (req, res) => {
const subscriptions = await Subscription.find({});
res.send(subscriptions);
});
router.post('/', isAuth, isAdmin, async (req, res) => {
const subscription = new Subscription({
name: req.body.name,
monthlyPrice: req.body.monthlyPrice,
yearlyPrice: req.body.yearlyPrice,
copyType: req.body.copyType,
seoType: req.body.seoType,
personalizationType: req.body.personalizationType
});
const newSubscription = await subscription.save();
if (newSubscription) {
return res
.status(201)
.send({ message: 'New Subscription created', data: newSubscription });
}
return res.status(500).send({message: 'Error on creating a new subscription'});
})
订阅操作:
const saveSubscription = (subscription) => async (dispatch, getState) => {
try {
dispatch({ type: SUBSCRIPTION_SAVE_REQUEST, payload: subscription });
const { userSignIn: { userInfo }} = getState();
if(!subscription._id) {
const { data } = await Axios.get('/api/subscriptions', subscription, {
headers: {
Authorization: 'Bearer ' + userInfo.token,
},
});
dispatch({ type: SUBSCRIPTION_SAVE_SUCCESS, payload: data})
} else {
const { data } = await Axios.put('/api/subscriptions/' + subscription._id, subscription, {
headers: {
Authorization: 'Bearer ' + userInfo.token,
},
});
dispatch({ type: SUBSCRIPTION_SAVE_SUCCESS, payload: data});
}
} catch (error) {
dispatch({ type: SUBSCRIPTION_SAVE_FAIL, payload: error.message});
}
}
订阅减速器:
function subscriptionSaveReducer(state = { subscription: {} }, action ) {
switch (action.type) {
case SUBSCRIPTION_SAVE_REQUEST:
return { loading: true };
case SUBSCRIPTION_SAVE_SUCCESS:
return { loading: false, subscription: action.payload, success: true };
case SUBSCRIPTION_SAVE_FAIL:
return { loading: false, error: action.payload };
default:
return state;
}
}
如果您可以提供帮助,请查看并帮助我解决问题。
谢谢你。
解决方案
router.post('/', isAuth, isAdmin, async (req, res)
在这个特定的行中,尝试将帖子放在所有大写字母中,例如“POST”......这应该可以。如果其他地方有这样的行,请确保将帖子全部大写。
推荐阅读
- amazon-web-services - 如何创建 AWS 安全组,仅限制来自 Google Cloud 上 Kubernetes 的入站流量?
- android - 将 Android Studio 用于不兼容的设备
- javascript - 当仅使用单字符、双字符或 rand 字符时,防止 google geocoder API 返回状态“OK”
- javascript - 如何在活动页面上设置图标?
- google-chrome-extension - 仅在扩展中临时存储当前选项卡
- javascript - 在 Get 请求期间从 Node.js 中的 JSON 数组中读取值
- html - 帮助缩放内联 SVG 图
- react-native - 使用反应导航复制顶部标题
- r - 有没有办法将字符向量分成两列?
- javascript - JS-我如何把它变成一个 ES6 模块?