【发布时间】:2021-04-23 22:37:23
【问题描述】:
我是 react 的初学者,我有一个小问题,我想更改一个 bool 值,它是 isApproved,所以管理员单击一个按钮并批准帖子,以便它可以显示在这里是我的代码。谁能帮帮我
这是改变isApproved值的函数
//@route put api/posts/approve/:id
//@desc approve post
//@access Private
router.post('/:id/approve', auth, async(req, res) => {
console.log("action base de donne begin");
Post.findById(req.params.id, (err, post) => {
console.log(post.isApproved);
if (err) {
console.log(err);
} else if (post.isApproved == false) {
post.update({$set: {isApproved: true}});
} else {
post.update({$set: {isApproved: false}});
}
});
});
后模型:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// Create Schema
const PostSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
ref: 'users'
},
text: {
type: String,
required: true
},
name: {
type: String
},
avatar: {
type: String
},
isApproved: {
type: Boolean,
default: false
},
likes: [
{
user: {
type: Schema.Types.ObjectId,
ref: 'users'
}
}
],
comments: [
{
user: {
type: Schema.Types.ObjectId,
ref: 'users'
},
text: {
type: String,
required: true
},
name: {
type: String
},
avatar: {
type: String
},
date: {
type: Date,
default: Date.now
}
}
],
date: {
type: Date,
default: Date.now
}
});
module.exports = Post = mongoose.model('post', PostSchema);
批准行动:
// Approve Approve
export const approve = id => async dispatch => {
try {
console.log('action is begin');
console.log(id);
const res = await axios.post(`/api/posts/${id}/approve`);
console.log('la valeur dans action est',res)
dispatch({
type: APPROVE_POST,
payload: { id, isApproved: res.data }
});
} catch (err) {
dispatch({
type: POST_ERROR,
payload: { msg: err.response.statusText, status: err.response.status }
});
}
};
后减速器
import {
GET_POSTS,
POST_ERROR,
UPDATE_LIKES,
DELETE_POST,
ADD_POST,
GET_POST,
ADD_COMMENT,
REMOVE_COMMENT,
APPROVE_POST
} from '../actions/types';
const initialState = {
posts: [],
post: null,
loading: true,
error: {}
};
export default function(state = initialState, action) {
const { type, payload } = action;
switch (type) {
case GET_POSTS:
return {
...state,
posts: payload,
loading: false
};
case GET_POST:
return {
...state,
post: payload,
loading: false
};
case ADD_POST:
return {
...state,
posts: [payload, ...state.posts],
loading: false
};
case DELETE_POST:
return {
...state,
posts: state.posts.filter(post => post._id !== payload),
loading: false
};
case POST_ERROR:
return {
...state,
error: payload,
loading: false
};
case UPDATE_LIKES:
return {
...state,
posts: state.posts.map(post =>
post._id === payload.id ? { ...post, likes: payload.likes } : post
),
loading: false
};
case APPROVE_POST:
return {
...state,
posts: state.posts.map(post =>
post._id === payload.id ? { ...post, isApproved: payload.isApproved } : post
),
loading: false
};
case ADD_COMMENT:
return {
...state,
post: { ...state.post, comments: payload },
loading: false
};
case REMOVE_COMMENT:
return {
...state,
post: {
...state.post,
comments: state.post.comments.filter(
comment => comment._id !== payload
)
},
loading: false
};
default:
return state;
}
}
case APPROVE_POST:
return {
...state,
posts: state.posts.map(post =>
post._id === payload.id ? { ...post, isApproved: payload.isApproved } : post
),
loading: false
};
【问题讨论】:
-
如果您使用标点符号并将您的问题文本分解成实际的句子,而不仅仅是单词串,这会有所帮助。坦率地说,我觉得花时间帮助那些没有努力让他们轻松理解他们寻求帮助的问题的人的动力为零。
标签: node.js reactjs mongodb redux