【发布时间】:2021-05-12 14:21:57
【问题描述】:
我想将我的详细信息作为 {userId:status} 保存到列表中,但我无法实现你能帮我解决我做错的地方吗?
if(campResp){
let userId = await req.body.userId
let status = req.body.status
let userResp = await User.findOne({'id':req.body.userId}).exec()
var data = {}
data[userId] = status
if(userResp){
campResp.views = {}
let visiterResp = await Campaign.find({'views':data})
if(visiterResp.length>0){
res.status(400).json({'status':false,'message':'Already watched'})
}else{
let pushResp = await campResp.views.push(data)
if(pushResp){
await campResp.save(async(err,response)=>{
if(response){
res.status(200).json({'status':true,'message':'campaign finished'})
}
})
}
}
}
架构很像,但仍然无法正常工作。
const mongoose = require('mongoose')
const campaignSchema = new mongoose.Schema({
id: mongoose.Schema.Types.ObjectId,
imageUrl:{
required:true,
type:String
},
link:{
required:true,
type:String
},
ownerId:{
required:true,
type:String
},
setting:{
types:{
type:String
},
bill:{
type:String
},
dateTime:{
type:String
},
expected_time:{
type:String
},
expected_views:{
type:String
},
expected_subs:{
type:String
},
expected_likes:{
type:String
}
},
views:[{
userId:Boolean
}]
},{versionKey: false},{_id:false})
module.exports = mongoose.model('Campaign',campaignSchema)
作为响应它正在保存什么,我如何像 userId:status 一样保存到我的数据库中。 Ex "6789786722hgdvasnbad":true 如何达到同样的效果。
"views": [
{
"_id": "609b60a82445e32e8060b0c2"
},
{
"_id": "609b60a82445e32e8060b0c4"
}
]
【问题讨论】:
-
关于数据库模型的一点评论,MongoDB 使用
_id字段作为每个文档的 ID 字段并在后台生成它,您应该使用它而不是定义的id字段。 -
哦,谢谢@Ayzrian,肯定会删除我自己的 id..
标签: node.js arrays mongodb rest