Я пытаюсь обновить два вложенных документа с одинаковым UUID. Часть сообщений является вложенным документом коллекции, и каждый дополнительный ответ / сообщение затем публикуется в другом вложенном документе в этом исходном вложенном документе. Я получаю одну коллекцию для обновления, а другую нет? Мне удалось заставить их обоих измениться соответственно, но они удвоились (плюс я забыл, как я достиг того эффекта, это было случайно). ПОЖАЛУЙСТА, помогите мне с этим. Я провел почти два дня, возиться с этим. Я создаю систему личных сообщений для собственного приложения, и это важно, чтобы эта функция работала. Спасибо, парни. Напомню ... мой экспресс-маршрут обновляет только одну подколлекцию, но мне нужно обновить КАЖДУЮ подколлекцию с тем же UUID. Пожалуйста, смотрите ниже ...
renderSubmit = () => {
// THIS IS THE WORKING INITIAL POST TO THE DATABASE. IT SENDS TO BOTH USERS SUCCESSFULLY - THIS IS THE INITIAL MESSAGE TO THE USER THAT POSTED THE INITIAL POSTING (JOB).
const { navigation } = this.props;
const propsData = navigation.getParam("data", "NO-ID");
const date = new Date();
let minute = date.getMinutes();
let hour = date.getHours();
let day = date.getDate();
let month = date.getMonth();
let year = date.getFullYear();
let minutesCalc = (minute.length === 1) ? "0" + minute : minute ;
let hours = date.getHours() % 12 || 12;
let ampm = (hours >= 12) ? "PM" : "AM";
const finalTime = month + "/" + day + "/" + year + " " + hour + ":" + minutesCalc + " " + ampm;
console.log("PROPSSSSSDATAAAA", propsData);
console.log("Submit Clicked.");
this.setState({
timestamp: finalTime
}, () => {
axios.post("http://10.0.2.2:5000/send/initial/message", {
email: propsData.email,
message: this.state.message,
timestamp: this.state.timestamp,
firstName: this.props.firstName,
lastName: this.props.lastName
}).then((res) => {
this.setState({
data: res.data,
isModalVisible: false
}, () => {
alert("You've successfully messaged this employer!");
})
}).catch((err) => {
console.log(err);
})
axios.post("http://10.0.2.2:5000/send/backlash/message", {
self: this.props.email,
message: this.state.message,
timestamp: this.state.timestamp,
firstName: this.props.firstName,
lastName: this.props.lastName
}).then((res) => {
this.setState({
dataSetTwo: res.data
}, () => {
console.log(this.state.dataSetTwo);
})
}).catch((err) => {
console.log(err);
})
})
}
const mongoose = require("mongoose");
const express = require("express");
const router = express.Router();
const cors = require("cors");
const app = express();
const config = require("config");
const mongo = require("mongodb");
mongo.connect(config.get("mongoURI"), { useNewUrlParser: true }, { useUnifiedTopology: true }, cors(), (err, db) => {
router.post("/", (req, res) => {
const { uuid, message, timestamp, firstName, lastName, email } = req.body;
console.log("REQBODYYYYYYYY", req.body);
const doc = {
uuid: uuid,
message: message,
timestamp: timestamp,
firstName: firstName,
lastName: lastName,
email: email
// firstName: firstName,
// lastName: lastName
}
let collection = db.collection("registers");
collection.update({ "messages.uuid": uuid }, { "$push": { "messages.$.response": doc } }, { multi: true }, (err, model) => {
if (err) {
console.log(err);
};
res.send(model);
console.log(model);
}
);
});
});
module.exports = router;
renderSubmit = () => {
console.log("Render Submit Clicked .");
const propsData = this.props.navigation.getParam("data", "NO-ID");
const date = new Date();
let minute = date.getMinutes();
let hour = date.getHours();
let day = date.getDate();
let month = date.getMonth();
let year = date.getFullYear();
let minutesCalc = (minute.length === 1) ? "0" + minute : minute ;
let hours = date.getHours() % 12 || 12;
let ampm = (hours >= 12) ? "PM" : "AM";
const finalTime = month + "/" + day + "/" + year + " " + hour + ":" + minutesCalc + " ";
this.setState({
timestamp: finalTime
}, () => {
axios.post("http://10.0.2.2:5000/individual/message/reply", {
uuid: propsData.uuid,
message: this.state.message,
timestamp: this.state.timestamp,
firstName: this.props.firstName,
lastName: this.props.lastName,
email: this.props.email
}).then((res) => {
this.setState({
dataSetTwo: res.data
}, () => {
console.log("DATASETTWO:", this.state.dataSetTwo)
})
}).catch((err) => {
console.log(err.response);
});
})
}