gpt4 book ai didi

javascript - 相应地添加/删除 Mongoose 中的元素

转载 作者:行者123 更新时间:2023-12-02 13:44:24 24 4
gpt4 key购买 nike

我是 Mongo/Mongoose 的新手,我在如何执行以下操作时遇到了困难:

我正在创建一个简单的应用程序,它利用 Yelp API 来查找用户可以搜索的区域周围的夜总会/酒吧。

向用户提供一个俱乐部列表,每个列表都有一个发送到 mongodb 的表格,该表格可以跟踪为该特定俱乐部预订的其他用户。

我已经制作了 Clubs 的架构

const clubSchema = new Schema({
clubID: String,
guests: [String]
})

其中,clubID 是俱乐部的 ID,guests 只是一个用于跟踪用户名的字符串数组。

我想做以下事情:

1) 当特定 clubID 时数据库中不存在,它将创建一个新的并插入 userNameguests

2) 如果 clubID存在并且 userName guests 中不存在(意味着它是不同的用户),它将推送 userName进入guests数组

3) 如果 clubID存在并且 userName存在于 guests同时删除 userName来自guests

我有以下伪代码:

exports.UpdateGuestList = function(req, res, next){
const clubID = req.params.clubID;
const userName = req.params.userName
const userEmail = req.params.userEmail;

Club.findOne({ clubID: clubID}, function(err, existingClub){
if (err) { return next(err) ;}
// if clubID exist in the data base, check the following
if (existingClub){
//1) if the current userName exist, remove it from guests array
if (existingClub.guests.includes(userName)){
console.log('Remove guest')
} else{ //2) if the current userName doesnt exist, push it into guests aaray
console.log('Push in gueest')
}
return res.send({"message": "done"})
}

// If clubID does not exist, create and save clubID
const club = new Club({
clubID: clubID,
guests: [userName]
})

club.save(function(err){
if (err) {return next(err)}
res.send({"message": "done"})
})
})
}

最佳答案

试试这个:

if (existingClub.guests.includes(userName)){

Club.findByIdAndUpdate(
clubID,
{$pull: {"guests": userName}},
{safe: true, upsert: true, new : true},
function(err, model) {
console.log(err);
}
);
}
else
{
console.log('Push in gueest')
Club.findByIdAndUpdate(
clubID,
{$push: {"guests": userName}},
{safe: true, upsert: true, new : true},
function(err, model) {
console.log(err);
}
);

}

干杯:)

关于javascript - 相应地添加/删除 Mongoose 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com