javascript - 对象创建错误(后端控制器)
问题描述
我要疯了,因为我已经尽一切可能。这是交易:我正在创建一个不和谐的机器人,它记录和存储 2 个用户活动(当他加入和离开语音频道时)。
我正在使用 MongoDB 和 Mongoose ODM。这是ActivitySchema
模型:
const mongoose = require("../database")
const ActivitySchema = new mongoose.Schema({
user: {
id: String,
name: String
},
from: {
id: String,
name: String
},
to: {
id: String,
name: String
},
timestamp: {
type: Date,
default: new Date()
}
})
const Activity = mongoose.model("Activity", ActivitySchema)
module.exports = Activity
这是前 5 行文档(出于隐私原因,我更改了用户名):
[
{
"user":{
"id":"258626789922832385",
"name":"User 1"
},
"from":{
"id":null,
"name":null
},
"to":{
"id":"712011063867998349",
"name":"OH GUI OH BOIII II"
},
"timestamp":"2021-01-24T16:52:02.999Z",
"_id":"600da5e744dfcb399410fe53",
"__v":0
},
{
"user":{
"id":"338750711393157121",
"name":"User 2"
},
"from":{
"id":null,
"name":null
},
"to":{
"id":"712011063867998349",
"name":"OH GUI OH BOIII II"
},
"timestamp":"2021-01-24T16:52:02.999Z",
"_id":"600da5ea44dfcb399410fe54",
"__v":0
},
{
"user":{
"id":"258626789922832385",
"name":"User 1"
},
"from":{
"id":"712011063867998349",
"name":"OH GUI OH BOIII II"
},
"to":{
"id":null,
"name":null
},
"timestamp":"2021-01-24T16:52:02.999Z",
"_id":"600da70244dfcb399410fe56",
"__v":0
},
{
"user":{
"id":"258626789922832385",
"name":"User 1"
},
"from":{
"id":null,
"name":null
},
"to":{
"id":"712011063867998349",
"name":"OH GUI OH BOIII II"
},
"timestamp":"2021-01-24T16:52:02.999Z",
"_id":"600da70844dfcb399410fe57",
"__v":0
},
{
"user":{
"id":"162677448897462272",
"name":"User 3"
},
"from":{
"id":null,
"name":null
},
"to":{
"id":"712011063867998349",
"name":"OH GUI OH BOIII II"
},
"timestamp":"2021-01-24T17:13:40.309Z",
"_id":"600daafccb560a2e841b25c2",
"__v":0
}
]
然后我创建了一个函数,它应该返回具有以下属性的对象数组:id, users (users connected), user (who joined or left), type (join or leave) and timestamp
.
const Activity = require("../models/activity.model")
async function getUsage(req, res) {
try {
const activities = await Activity.find()
let state = []
let users = []
let id = 0
for (let i = 0; i < activities.length; i++) {
id++
const activity = activities[i]
if (activity.from.id !== null && activity.to.id !== null) continue
const type = activity.from.id === null || activity.to.id !== null ? "join" : "leave"
if (type === "join" && !users.find(user => user.id === activity.user.id)) {
users.push({ id: activity.user.id, name: activity.user.name })
}
if (type === "leave") {
users = users.filter(user => user.id !== activity.user.id)
}
state.push({
id,
users,
user: activity.user,
type,
timestamp: activity.timestamp
})
}
return res.send(state)
} catch (error) {
return res.send({ error: "Error" })
}
}
module.exports = { getUsage }
第一个元素有一个问题:
[
{
"id":1,
"users":[
{
"id":"258626789922832385",
"name":"User 1"
},
{
"id":"338750711393157121",
"name":"User 2"
}
],
"user":{
"id":"258626789922832385",
"name":"User 1"
},
"type":"join",
"timestamp":"2021-01-24T16:52:02.999Z"
},
{
"id":2,
"users":[
{
"id":"258626789922832385",
"name":"User 1"
},
{
"id":"338750711393157121",
"name":"User 2"
}
],
"user":{
"id":"338750711393157121",
"name":"User 2"
},
"type":"join",
"timestamp":"2021-01-24T16:52:02.999Z"
}
]
根据我的数据,应该是:
[
{
"id":1,
"users":[
{
"id":"258626789922832385",
"name":"User 1"
}
],
"user":{
"id":"258626789922832385",
"name":"User 1"
},
"type":"join",
"timestamp":"2021-01-24T16:52:02.999Z"
},
{
"id":2,
"users":[
{
"id":"258626789922832385",
"name":"User 1"
},
{
"id":"338750711393157121",
"name":"User 2"
}
],
"user":{
"id":"338750711393157121",
"name":"User 2"
},
"type":"join",
"timestamp":"2021-01-24T16:52:02.999Z"
}
]
它在以下元素中变得越来越奇怪!
请帮忙 :)
解决方案
推荐阅读
- python - 使用 NLTK 构建字符级 Ngram 语言模型
- excel - 使用 Excel VBA Range.Find 查找包含相似值的一致数据范围的第一个和最后一个地址并打破 Do 循环?
- ios - 转换发布者时“接收取消”
- c# - GetExternalLoginInfoAsync 始终返回 null Azure AD
- javascript - VsCode 不显示电子模块的智能感知
- ios - 为什么我不能在 swift 中使用客户端证书对 https 请求进行身份验证?
- bash - 如何在 Docker Compose 中运行多个 bash 命令(使用管道)
- delphi - Delphi 中的继承:是否每个 Delphi 子类都有自己独特的超类私有字段副本?
- flutter - 如何在 2 个类之间导航,其中一个类需要传递数据?飘飘然
- ios - UIAlertController SheetView 带有自定义图像,例如 WhatsApp IOS Swift