【问题标题】: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
    }]
});

【问题讨论】:

标签: javascript mongoose


【解决方案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.` 与您的解决方案
猜你喜欢
  • 1970-01-01
  • 2020-06-18
  • 2021-11-25
  • 2019-11-12
  • 1970-01-01
相关资源
最近更新 更多