ユーザーは言語を追加できます。言語は、ユーザケーマで教えるか学習するタイプの配列として格納されます。私は単純に言語に言語を追加することができます。プッシュを使用して[]を行うことはできますが、どうすれば削除できますか?Mongoose - 配列要素からオブジェクトを削除する方法
言語オブジェクトの例
let language = {
"code": FR
"level": 1
};
UserScema.js
var UserSchema = new Schema({
email: {
value: {
type: String,
lowercase: true,
//unique: true,
},
token: String,
verified: Boolean,
},
password: {
type: String,
},
phone: {
countryCode: {
type: String,
//required:true,
unique: true,
},
number: {
type: String,
required: true
},
code: String,
verified: {
type: Boolean,
default: false
},
},
jwt: String,
profile: {
username: String,
firstname: String,
lastname: String,
dob: String,
level: Number,
location: String,
image: String,
introduction: String,
},
languages: {
teach: [],
learn: [],
}
},
{
timestamps: {createdAt: 'created_at', updatedAt: 'updated_at'}
});
LanguagesController.js
destroy(req, res) {
let id = req.params.id;
let language = {
"code": req.body.code,
"level": req.body.level
};
let type = req.params.type;
User.findOne({'_id': id}, function (err, user) {
if (err) {
return res.status(404).json({
success: true,
status: 404,
data: err,
message: "User does not exist",
});
}
if (type === "teach") {
for (let i = 0; i < user.languages.teach.length; i++)
if (user.languages.teach[i].code === language.code) {
user.languages.teach[i].remove();
break;
}
}
if (type === "learn") {
//user.languages.learn.push(language);
}
console.log(user);
user.save((err, user) => {
return res.status(200).json({
success: true,
status: 201,
data: user,
message: "Successfully Deleted Language",
});
});
});
}
私は[user.languages.teachを取得.removeが、イムを使用しようとしましたi] .removeは関数ではありません。
if(type === "teach")の中のforループの代わりに 'user.languages.teach = user.languages.teach.filter(o => o.code!== language.code) ' – RaghavGarg
私はユーザーの入力に応じて言語配列を変更したいので、タイプを使用しているのですが、タイプを操作したい場合は同じコードを使用します。==教授またはタイプ== learn .. – Kay
申し訳ありませんあなたのif条件を取り除くと言っているわけではありませんが、上記のスニペットを使って 'if(type ===" teach ")'の中のforループを削除するように言いました。 – RaghavGarg