【问题标题】:I can't save same value on array in mongodb我无法在 mongodb 中的数组上保存相同的值
【发布时间】:2022-01-28 21:22:00
【问题描述】:

我在 mongodb 的数组中保存(相同)值时遇到问题:

这是我用来创建用户的架构:

    const userSchema = new mongoose.Schema(
  {
   
    email: { type: String, required: true },
    addr: { type: String, required: true, unique: true },
    isFirstConnection: { type: Boolean, default: true, required: true },
    type:{ type: String },
    firstName:{ type: String },
    lastName:{ type: String },
    companyName:{ type: String },
    birthDate:{ type: String },
    nationality:{ type: String },
    description:{ type: String },
    avatar:{ type: String },
    isAdmin: { type: Boolean, default: false, required: true },
    isSeller: { type: Boolean, default: false, required: true },
    seller: {
      name: String,
      banner: String,
      description: String,
      rating: { type: Number, default: 0, required: true },
      numReviews: { type: Number, default: 0, required: true },
      collection: {type: Array}

      
      //collection: [{type: String, required:true ,unique: true, default:'My Default Collection'}]
     
    },
    
  },
  {
    timestamps: true,
  }
);
const User = mongoose.model('User', userSchema);
export default User;

这里是我创建新用户的代码:

userRouter.post(
  '/signin',
  expressAsyncHandler(async (req, res) => {
    
    
    const user = await User.findOne({ addr: req.body.addr });
    if (user) {
        res.send({
          _id: user._id,
          addr: user.addr,
          email: user.email,
          isAdmin: user.isAdmin,
          isSeller: user.isSeller,
          isFirstConnection: user.isFirstConnection,
          token: generateToken(user),
        }); 
        return;

    } else {

    const newUser = new User({
      email: req.body.email,
      addr: req.body.addr,

      seller:{
       
        collection:["Default Collection"],

      },
    });
    
    
    const createdUser = await newUser.save();
    res.send({
      _id: createdUser._id,
      email: createdUser.email,
      isAdmin: createdUser.isAdmin,
      isSeller: createdUser.isSeller,
      isFirstConnection: createdUser.isFirstConnection,
      token: generateToken(createdUser),
    });
    
  }
  })

);

实际状态:

如果我的数据库中没有用户,则可以创建用户。但是在数据库(mongodb)中创建用户后,我无法创建另一个用户。在研究了这个问题后,我知道这个问题来自我的 userSchema 在这一行:

collection: {type: Array}

但我不知道为什么?我发现如果我尝试使用“集合”数组中的值保存用户,该值与另一个用户在同一数组中的值相同,则创建用户失败。但我真的不明白为什么。

所以我的问题是:

如何在我的“集合”数组以及用户之间保存相同的值?

感谢您的帮助,我完全迷路了......

【问题讨论】:

    标签: arrays mongodb mongoose duplicates save


    【解决方案1】:

    抱歉,我经过 3 天的研究才发现,这真的很愚蠢,但你必须知道。

    在 mongodb 的“索引”设置中,我的“集合”具有“唯一”属性。我删除了,一切正常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 2016-02-05
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2012-09-18
      相关资源
      最近更新 更多