নোড.জেস মোঙ্গুজ.জেস স্ট্রিং অবজেক্টআইডি ফাংশনে


174

মংগুজ ব্যবহার করে নোডে একটি স্ট্রিংকে কোনও অবজেক্টে পরিণত করার কোনও ফাংশন আছে? স্কিমাটি নির্দিষ্ট করে যে কিছু একটি অবজেক্টআইড, কিন্তু যখন এটি কোনও স্ট্রিং থেকে সংরক্ষণ করা হয়, মঙ্গো আমাকে বলে যে এটি এখনও কেবল একটি স্ট্রিং। বস্তুর _id, উদাহরণস্বরূপ, প্রদর্শিত হয় objectId("blah")

উত্তর:


419

আপনি এটি এর মতো করতে পারেন:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId('4edd40c86762e0fb12000003');

হ্যাঁ এই ক্ষেত্রে এটি কিছুটা পরিষ্কার। টাইম () থেকে করা হলে কেবল মঙ্গো.বিএসএস পিওর ব্যবহারের প্রয়োজন হতে পারে
প্রতিভাধারাজোনস

3
এটি যদি কোনও অবৈধ স্ট্রিং থাকে তবে এটি একটি ত্রুটি ফেলে দেয়? মঙ্গো আইডি ক্ষেত্রগুলির জন্য একটি REST এপিআইতে ইনপুট বৈধতা দেওয়ার সর্বোত্তম উপায় খুঁজছেন।
জাম্বোনিলি

1
সত্যই প্রশ্নের উত্তর দেয় না কারণ এই পদ্ধতিটি ব্যবহার করে স্ট্রিং রূপান্তরিত হবে এবং আসলটির মতো হবে না।
ed209

মংগুজ.টাইপস.অবজেক্টআইডি (আইডি) তবে আমার আইডি অপরিবর্তিত আছে তবে কী ফিরে আসবে? নতুন আইডি বা ত্রুটি
কেভাল ভট্ট

@ কেভিনডেন্টে আমি টাইপস্ক্রিপ্টের সাথে নোডেজ ব্যবহার করছি, আমি আপনার সমাধানটি চেষ্টা করেছি কিন্তু এখনও একটি স্ট্রিং পেয়েছি এবং আমার জিজ্ঞাসাটি কী ফিরে আসবে তা ফিরে আসে না। এটি টাইপ স্ক্রিপ্টে কীভাবে করবেন সে সম্পর্কে কোনও ধারণা?
সোফিয়ান ফাদিল

9

আপনি এটি এর মতো করতে পারেন:

var mongoose = require('mongoose');
var _id = mongoose.mongo.BSONPure.ObjectID.fromHexString("4eb6e7e7e9b7f4194e000001");

সম্পাদনা: নতুন স্ট্যান্ডার্ডের থেকে স্ট্রিংয়ের চেয়ে হেক্স স্ট্রিং রয়েছে


1
ঠিক আছে, আরও "নতুন" স্ট্যান্ডার্ডটি মনে হয় mongoose.mongo.BSONPure.ObjectID.createFromHexString () (মংগুজ 3.9.7 হিসাবে)
এভারেক

1
যারা এটি করার চেষ্টা করছেন তাদের জন্য, এটি নির্বাচিত উত্তরের চেয়ে অনেক ভাল উত্তর কারণ আপনি যদি ইতিমধ্যে মঙ্গো আইডি ব্যবহার করেন তবে এটি আইডিটি রূপান্তরিত করবে না।
ed209

1
এই আর কাজ, গৃহীত উত্তর পরিবর্তে ব্যবহার
paper1111

বিএসওনপিউর mongoose.mongoআমার পক্ষে অংশ নয় । কেউ কি নিশ্চিত করতে পারবেন?
আর্টুর তাগিসো

5

মন্তব্যগুলি বিচার করে আপনি সন্ধান করছেন:

mongoose.mongo.BSONPure.ObjectID.isValid

অথবা

mongoose.Types.ObjectId.isValid

5
var mongoose = require('mongoose');
var _id = mongoose.mongo.ObjectId("4eb6e7e7e9b7f4194e000001");

3
আপনি mongoose.Types.ObjectIdএবং এর মধ্যে পার্থক্য সম্পর্কে মন্তব্য করতে পারেন mongoose.mongo.ObjectId? মঙ্গুজের বস্তুর বৈশিষ্ট্যগুলি পৃথক, তবে তারা নীচে একই পদ্ধতিটি উল্লেখ করতে পারে। Typesবনাম উপর অন্তর্নিহিত পদ্ধতি সম্পর্কে মন্তব্য করুন mongo
স্টিম্পোওয়ার্ড হয়েছে

5

আমি এই পদ্ধতিটি সমাধান করতে পারিনি (অবশ্যই আমি বেশি দিন সন্ধান করিনি)

mongoose.mongo.BSONPure.ObjectID.fromHexString

যদি আপনার স্কিমা সম্পত্তিটি অবজেক্টআইডের ধরণের বলে প্রত্যাশা করে তবে রূপান্তর অন্তর্নিহিত, কমপক্ষে এটি 7.7.৮ হিসাবে দেখা যাবে।

আপনি তবে এর মতো কিছু ব্যবহার করতে পারেন যা কিছুটা আরও নমনীয়তা দেয়:

function toObjectId(ids) {

    if (ids.constructor === Array) {
        return ids.map(mongoose.Types.ObjectId);
    }

    return mongoose.Types.ObjectId(ids);
}

3

আপনি এটি ব্যবহার করতে পারেন

const { ObjectId } = require('mongodb');
const _id = ObjectId("4eb6e7e7e9b7f4194e000001");

এটি করার সহজ উপায়


0

আপনি যদি এক্সপ্রেস এবং মঙ্গুজের মাধ্যমে একটি REST এপিআই প্রয়োগ করছেন তবে নীচের কোড স্নিপেটটি দেখুন। (ADD এর উদাহরণ)

....
exports.AddSomething = (req,res,next) =>{
  const newSomething = new SomeEntity({
 _id:new mongoose.Types.ObjectId(), //its very own ID
  somethingName:req.body.somethingName,
  theForeignKey: mongoose.Types.ObjectId(req.body.theForeignKey)// if you want to pass an object ID
})
}
...

আশা করি এটা সাহায্য করবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.