我想使用输入x1c 0d1x更新对象-配置文件数组
我在reactjs中使用express,mongoose。我有一个模式--
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const validator = require("validator");
const { ObjectId } = mongoose.Schema.Types;
const userSchema = new mongoose.Schema({
email:{
type: String,
required: true,
minlength: 4,
unique: true,
validate: {
validator(email) {
return validator.isEmail(email);
},
},
},
password:{
type: String,
required: true,
minlength: 5,
select: false,
},
profiles:[ // array of user's profile
{
type:ObjectId,
name:String,
}
]
})
这是我的路线--
router.post('/createProfile', createProfile);
我所尝试的--
module.exports.createProfile = (req,res) =>{
const {name} = req.body;
console.log(name)
User.push(profiles,name)
.then((result)=>res.send(result))
.catch((err)=>console.log(err))
}
我不知道使用推送的正确方法。我需要使用推送吗?我的配置文件可以吗?
2条答案
按热度按时间xdyibdwo1#
首先,您在模式中指定
profiles
字段的类型为array of ObjectIds
,但看起来您希望它的类型为String
,因为您正在尝试将name
推入模式。因此,您应该首先更改Schema模型:
现在,您可以像这样将新项目推送到该数组:
s4n0splo2#
你可以在moongose中使用%push操作符
这
findOneAndUpdate
函数是用来查找用户.并且更新它.正如你要求的