javascript - Vue js/Javascript Objects.assign() 不工作
问题描述
我需要在 Vue/Javascript 中连接两个对象并按日期字段对结果进行排序,但使用Object.assign()
.
我尝试了在 StackOverflow 上搜索的其他方法,但没有按预期工作。大多数情况下我得到空的结果
methods: {
getAllMessages: function () {
// console.log(this.myID);
let distinct = '';
firebase.firestore().collection('private-messages').where('memberID', '==', `${this.myID}`)
.orderBy('date').onSnapshot(res => {
let members = [];
res.forEach(doc => {
members.push(doc.data().uid);
});
distinct = Array.from(new Set(members));
// console.log(distinct);
this.getUserToTalk(distinct);
});
},
getMyMessages: function (memberID) {
let myMessages = [];
firebase.firestore().collection('private-messages').where('uid', '==', `${this.myID}`).where('memberID', '==', `${memberID}`)
.orderBy('date').onSnapshot(res => {
res.forEach(doc => {
myMessages.push(doc.data());
});
});
// this.myMessages = myMessages;
return myMessages;
},
getMessages: function (memberID) {
let messages = [];
firebase.firestore().collection('private-messages').where('uid', '==', `${memberID}`).where('memberID', '==', `${this.myID}`)
.orderBy('date').onSnapshot(res => {
res.forEach(doc => {
messages.push(doc.data());
});
});
// this.memberMessages = messages;
return messages;
},
getUserToTalk: function (memberID) {
axios.post('http://localhost/backend/getMemberToTalk.php', {
"token": token,
"whoToTalkTo": memberID,
}).then(response => {
if (response.data != "Error getting user data and tour") {
let joinedData = []
// console.log(response.data);
response.data.forEach(res => {
let id = res.memberID;
let messages = this.getMessages(id);
// console.log(messages);
let myMessages = this.getMyMessages(id);
// console.log(myMessages);
// if I use below assignment I can get the messages, but I need to concat them.
// so, if I use let conversation = Object.assign({}, messages, myMessages);
// or let conversation = { ...messages, ...myMessages }
// the result is always empty.
let talk1 = Object.assign(messages);
let talk2 = Object.assign(myMessages);
console.log(talk, talkmy);
let data = {
memberID: res.memberID,
memberProfileImg: res.memberProfileImg,
memberName: res.memberName,
memberLastname: res.memberLastname,
memberCity: res.memberCity,
memberState: res.memberState,
memberMessages: messages,
myMessages: myMessages,
// messages: conversation
}
joinedData.push(data);
});
// console.log(joinedData);
this.memberData = joinedData;
// console.log(this.memberData);
} else {
console.log(response.data);
}
}).catch(error => {
console.log(error);
});
},
}
这些是完整的对象,在下面的示例中,我需要将对象添加messages.js:140
为“第三个索引”,messages.js:137
从而导致
0:{...}
1:{...}
2:{...}
接着
3:{...}
解决方案
推荐阅读
- rust - 如何从另一个(嵌套)文件夹中读取文件?
- jquery - 根据 jquery 中的第一个选择 id 过滤选择值
- javascript - 如何在 JavaScript 中同时使用多个方法
- datetime - 当 TIME 为午夜时,添加 DATE 和 TIME 不起作用
- r - 在 R 中使用手动设置的平均值计算标准偏差
- reactjs - 调试在 JetBrains Rider 中不起作用的 React Typescript 项目
- angular - 将 Ngclass 与 obervable 一起使用
- c - 输入允许的最大字符串数时,如何在创建字符串数组时跳出循环?
- python - 如何根据列名、另一列中的值和索引范围替换数据框中列中的值?
- symfony - Symfony - 无法确定从哪里加载数据库配置