检查Javascript中对象数组中的键是不是?

Posted

技术标签:

【中文标题】检查Javascript中对象数组中的键是不是?【英文标题】:Check if a key in array of objects in Javascript?检查Javascript中对象数组中的键是否? 【发布时间】:2020-11-19 00:28:38 【问题描述】:

我尝试检查一个值是否在数组的对象中。之后我推送的对象是值不在数组中。我该怎么做?

router.post('/save', (req, res) => 
let userId = req.user.id
let dataPushSave = req.body.idSave
let dataPushSaveObj = idSave: dataPushSave

User.findById(userId, (err, user) => 
    if (user.favorites.idSave !== dataPushSave) 
        user.favorites.push(dataPushSaveObj)
        user.save()
    
)

我的猫鼬模型:

    const User = new Schema(
    firstName: 
        type: String,
        required: true
    ,
    favorites: [
        _id: Object,
        idSave: String
    ]
);

【问题讨论】:

like this? 【参考方案1】:
    const User = new Schema(
    firstName: 
        type: String,
        required: true
    ,
    favorites: [
        _id: Object,
        idSave: String
    ]
);

从上述架构中,从收藏夹中删除 _id: Object。 我会推荐下面的架构

const User = new Schema(
    firstName: 
        type: String,
        required: true
    ,
    favorites: 
        type: [new Schema(
        idSave:  type: String ,
      ,  _id: false )]
    
);

然后使用 $addToSet 运算符确保收藏夹数组中没有重复项。

let user;
User.findByIdAndUpdate(
  userId, 
   $addToSet:   favorites: dataPushSaveObj  , 
   new: true , // this option will make sure you get the new updated docc
  (err, doc) => 
    if (err) console.error(err);
    user = doc;
  
);

【讨论】:

我有一个 Tried to set nested object field favorites` 到数组 [object Object] 和严格模式设置为 throw.` 与您的解决方案

以上是关于检查Javascript中对象数组中的键是不是?的主要内容,如果未能解决你的问题,请参考以下文章

jquery检查ajax是不是有某两个数组中的键

用 Javascript 中的键值对重构对象数组并输出或发出它以用 mongoose 和 MongoDB 保存它?

如何根据 JavaScript 中的值检查对象是不是在数组中?

使用Javascript检查JSON对象是不是包含值[重复]

在Javascript中更新对象数组中的键的最有效方法是啥? [复制]

标准化 javascript 对象数组中的键