我正在try 建立一个使用Express JS和reactJS的消息传递站点. 我目前正在开发该网站的消息发送功能.我的目标是,当用户单击Reaction页面上的Send按钮时,它向Express后端发出POST请求,后者将消息数据推送到我的MongoDB Altlas集合中正确用户的"Messages"array.问题是我不知道如何将消息推送到正确用户的数组中,因为它与集合中的其他数据嵌套在一起. 有谁可以帮我?
以下是我坚持使用的index.js快速代码:
const userSchema = new mongoose.Schema({
name: String,
password: String,
profilePicture: String,
contacts: [{name: String,
profilePicture: String,
messages: [{sender: String, message: String}],
}]
});
const User = new mongoose.model('User', userSchema);
app.post("/send-message", (req, res) => {
var sender = req.body.sender;
var recv = req.body.recv;
var message = req.body.msg
User.findOne({name: sender}).then(user => {
user.contacts.forEach(contact => {
if (contact.name === recv){
// newMessage is the object I would like to push to the
// messages array for the sender.
var newMessage = {sender: "me", message: message};
}
});
}).then(() => {
User.findOne({name: recv}).then(user => {
user.contacts.forEach(contact => {
if (contact.name === sender){
// newMessage is the object I would like to push to
// the messages array for the receiver.
var newMessage = {sender: "them", message: message};
}
});
}).then(res.send("Message Sent!"))
.catch(e => {console.log("2: " + e); res.send("Error!")});
}).catch(e => {console.log("1: " + e); res.send("Error!")});
});
下面是我对SendMessage函数的react 代码:
const [usrn, setUsrn] = React.useState("<Username>");
const [pass, setPass] = React.useState("<Password>");
const [messageThread, setMessageThread] = React.useState({});
const [message, setMessage] = React.useState("");
const SendMessage = () => {
axios.post(props.apiUrl + "send-message/", {sender: usrn, recv:
messageThread.contact, msg: message})
.then(res => {
console.log(res.data);
setMessage("");
});
}