MongoDBIntermediate
Virtual Properties
কম্পিউটেড প্রপার্টি: virtual getter/setter ও toJSON-এ অন্তর্ভুক্তি — বাংলায়।
9টি অংশবাংলা ভাষায়
Virtual কী?
Virtual হলো এমন একটা property যা ডেটাবেসে save হয় না, কিন্তু runtime-এ অন্য field-গুলো থেকে computed হয় — যেমন fullName firstName + lastName থেকে।
Virtual getter
fullName virtualjs
js
const userSchema = new mongoose.Schema({
firstName: String,
lastName: String,
});
userSchema.virtual("fullName").get(function () {
return this.firstName + " " + this.lastName;
});
const user = await User.findById(id);
console.log(user.fullName); // 'রহিম আহমেদ'
console.log(user.toObject().fullName); // আসবে না (নিচে দেখুন)toJSON-এ virtual
API response-এ virtualjs
js
const userSchema = new mongoose.Schema(
{
firstName: String,
lastName: String,
},
{
toJSON: { virtuals: true }, // JSON-এও আসবে
toObject: { virtuals: true },
}
);
userSchema.virtual("fullName").get(function () {
return this.firstName + " " + this.lastName;
});
// API-তে এখন clear output
res.json(user); // { ..., fullName: 'রহিম আহমেদ' }Virtual setter
Set — UI থেকে splitjs
js
userSchema.virtual("fullName").set(function (value) {
const parts = value.split(" ");
this.firstName = parts[0];
this.lastName = parts.slice(1).join(" ");
});
user.fullName = "রহিম আহমেদ";
console.log(user.firstName); // 'রহিম'
console.log(user.lastName); // 'আহমেদ'Virtual save হয় না
Virtual property ডেটাবেসে যায় না। এটি শুধু document instance-এ ও (proxy ছাড়াও) log/json-এ computed value দেখানোর জন্য। কিছু field persistently চাইলে schema-তে রাখুন।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।