无法在用户愿望列表键中追加多个项目



这是我的前端代码。最初,当令牌存在于本地存储中时,我从令牌中获取用户,然后更新用户的代码和获取数据库中的用户的操作


let token = JSON.parse (localStorage.getItem ('token'));

async function addtoWishlist (id) {
let temp = await findId ();
let user = await temp.json ();
let wishlistArray = user.wishItems;
console.log ('wishlistArray:', wishlistArray);

wishlistArray.push (id);
let dts = {
wishItems: wishlistArray,
};
let data_to_send = JSON.stringify (dts);

fetch (`http://localhost:2233/*/user/add`, {
method: 'PATCH',
body: data_to_send,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
})
.then (k => {
return k.json ();
})
.then (res => {
console.log (res);
})
.catch (err => {
console.log (err);
});
}

async function findId () {
let user = await fetch (`http://localhost:2233/*/user`, {
headers: {
'Content-Type': 'application/json',

Authorization: `Bearer ${token}`,
},
});

return user;
}

控制器代码

app.get ('/*/user', authenticate, async (req, res) => {
const user = req.user.user;
return res.send (user);
});
app.patch ('/*/user/add', authenticate, async (req, res) => {
try {
console.log ('inside patch');
let user = req.user.user;
console.log ('user:', user);
console.log (req.body);
user = await User.findByIdAndUpdate (user._id, req.body, {
new: true,
})
.lean ()
.exec ();
console.log ('after-user', user);
return res.send (user);
} catch (e) {
return res.send (e.message);
}
});

用户模式如下所示

const userSchema = new Schema (
{
fullName: {type: String, required: false},
email: {type: String, required: true},
password: {type: String, required: true},
username: {type: String, required: true},
mobile: {type: Number, required: true},
description: {type: String, required: true},
bagItems: [
{
productId: {
type: Schema.Types.ObjectId,
ref: 'product',
required: false,
},
count: {type: Number, required: false},
},
],
wishItems: [
{
type: Schema.Types.ObjectId,
ref: 'product',
},
],
},
{
versionKey: false,
timestamps: true,
}
);

**每当我将项目添加到心愿单中时,它就会替换已经存在的项目

您需要使用$push运算符

user = await User.findByIdAndUpdate (user._id, { $push: req.body }, { ...

确保req.body只有wishItems属性,而没有其他属性。

最新更新