সম্ভবত এটিই সময়, সম্ভবত আমি বিরল দস্তাবেজে ডুবে যাচ্ছিলাম এবং মঙ্গুজে আপডেট করার ধারণার চারপাশে আমার মাথাটি জড়িয়ে রাখতে পারছি না :)
চুক্তিটি এখানে:
আমার একটি যোগাযোগের স্কিমা এবং মডেল রয়েছে (সংক্ষিপ্ত বৈশিষ্ট্য):
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var mongooseTypes = require("mongoose-types"),
useTimestamps = mongooseTypes.useTimestamps;
var ContactSchema = new Schema({
phone: {
type: String,
index: {
unique: true,
dropDups: true
}
},
status: {
type: String,
lowercase: true,
trim: true,
default: 'on'
}
});
ContactSchema.plugin(useTimestamps);
var Contact = mongoose.model('Contact', ContactSchema);
আমি ক্লায়েন্টের কাছ থেকে আমার অনুরোধ পেয়েছি, আমার প্রয়োজনীয় ক্ষেত্রগুলি অন্তর্ভুক্ত করে এবং এভাবে আমার মডেলটি ব্যবহার করুন:
mongoose.connect(connectionString);
var contact = new Contact({
phone: request.phone,
status: request.status
});
এবং এখন আমরা সমস্যা পৌঁছেছি:
- যদি আমি কল
contact.save(function(err){...})
করি তবে আমি একটি ত্রুটি পেয়েছি যদি একই ফোন নম্বরটির সাথে যোগাযোগ ইতিমধ্যে উপস্থিত থাকে (যেমনটি প্রত্যাশিত - অনন্য) - আমি
update()
পরিচিতিতে কল করতে পারি না , যেহেতু কোনও নথিতে সেই পদ্ধতিটি বিদ্যমান নেই - যদি আমি মডেলটির আপডেটটি কল করি:
Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
আমি কিছু ধরণের অসীম লুপের মধ্যে চলে যাই, যেহেতু মঙ্গুজ আপডেট প্রয়োগটি স্পষ্টভাবে দ্বিতীয় প্যারামিটার হিসাবে কোনও বস্তু চায় না। - যদি আমিও এটি করি তবে দ্বিতীয় প্যারামিটারে আমি অনুরোধের বৈশিষ্ট্যগুলির সাথে
{status: request.status, phone: request.phone ...}
কাজ করে তার একটি সহযোগী অ্যারে পাস করি - তবে তারপরে আমার নির্দিষ্ট পরিচিতির কোনও রেফারেন্স নেইcreatedAt
এবং এরupdatedAt
বৈশিষ্ট্যগুলি এবং সন্ধান করতে পারি না ।
সুতরাং নীচের লাইনটি, সর্বোপরি আমি চেষ্টা করেছি: একটি নথি দেওয়া আছে contact
, কীভাবে এটি উপস্থিত থাকলে তা আপডেট করব, না থাকলে এটি যুক্ত করব?
আপনার সময় জন্য ধন্যবাদ।
pre
জন্যsave
?