Sequelize.js দ্বারা উত্পাদিত এসকিউএল আমি কীভাবে দেখতে পারি?


100

আমি পোস্টগ্রিএসকিউএল সার্ভারে প্রেরিত এসকিউএল কমান্ডগুলি দেখতে চাই কারণ সেগুলি সঠিক কিনা তা আমার চেক করা দরকার। বিশেষত, আমি টেবিল তৈরির আদেশগুলিতে আগ্রহী।

উদাহরণস্বরূপ, অ্যাক্টিভেকর্ড (রুবি) এর এসকিউএল স্টেটমেন্টগুলিকে স্ট্যান্ডার্ড আউটপুটে মুদ্রণ করে। নোড.জেএস / অ্যাকশনহিরো.জেএস এবং সিকুয়েলাইজ.জেএস এর সাথেও কি এটি সম্ভব?

উত্তর:


162

সিক্যুয়ালাইজ শুরু করার সময় আপনি লগিং বিকল্পটি পাস করতে পারেন যা কোনও ফাংশন বা কনসোল.লগ হতে পারে

var sequelize = new Sequelize('database', 'username', 'password', {
    logging: console.log
    logging: function (str) {
        // do your own logging
    }
});

আপনি যদি কেবল টেবিল তৈরির প্রশ্নগুলি দেখতে চান তবে আপনি। Sync এ লগিং বিকল্পটিও পাস করতে পারেন

sequelize.sync({ logging: console.log })

ধন্যবাদ, এটি আমি যা চাই ঠিক তাই DEPRECATION WARNING: The logging-option should be either a function or false. Default: console.log-- এটার মানে কি?
আইডিয়াবক্সার

মানে আপনার সত্যের পরিবর্তে কোনও ফাংশন পাস করা উচিত।
মিক হানসেন

4
আমি কখনও পাস করেনি true
আইডিয়াবক্সার

4
আমি পার্টিতে কিছুটা দেরি করেছি তবে console.logরহস্যজনক উপায়ে কাজ করি works আপনার ব্যবহার করে { logging: (msg) => console.log(msg) }বা লগ বার্তাটি এড়াতে সক্ষম হওয়া উচিত { logging: function(msg) { console.log(msg) } }। (স্বাক্ষরিত যাতে আমি পুরোপুরি ভুল হতে পারি)
3ocene

4
আমি উত্পন্ন জিজ্ঞাসা দেখতে কোন উপায় আছে, কিন্তু কোয়েরি কার্যকর করা উচিত নয়?
নিখিল সিএম

38

যেমন লগতে বলা হয়েছে Error: Please note that find* was refactored and uses only one options object from now on.। আপনি যদি কেবল একটি আদেশের ফলাফল পেতে চান তবে সর্বশেষ সিক্যুয়ালাইজ সংস্করণ (4) এর জন্য:

User.findAll({where: {...}, logging: console.log})


4
এটি দেশীয় প্রশ্নের সাথেও কাজ করে:query(statement, { replacements: { userId: userId, superiorPositions: [ 4, 5, 7 ], departments: [ departmentId ] }, logging: console.log });
খ্রিস্টান নোয়েল

4
লগিংয়ের জন্য এটি সঠিক উত্তর: কনসোল.লগ স্থাপন করা উচিত, সিক্যুয়ালাইজ 4 এ
ব্যবহারকারী 627119

30

যদি আপনি একটি কমান্ডের সিক্যুয়ালাইজটি দেখতে চান তবে আপনি এটি শুনতে এবং স্কেল প্রিন্টের সাথে একটি ফাংশন সংযুক্ত করতে পারেন।

এই উদাহরণটি দেখুন:

User.find(1).on('sql', console.log).then(function(user) {
  // do whatever you want with the user here

39
আপনি এখন কোনও একক বিবৃতিতে লগ করার বিকল্প হিসাবে লগারে পাস করুন:User.find(1, { logging: console.log })
স্টিফেন ওয়াটকিন্স

4
মাইন শুধু <functionName>.findOne(...).on is not a function সিক্যুয়ালাইজ 3.30.4 ব্যবহার করে বলেছে
ginna

4
এটি উপস্থিত হয় যে অ্যাসোসিয়েশনের কিছু মিশ্রণ লগিং বিকল্পটি সমর্থন করে না। বিশেষত, get*একটি সম্পর্কের উত্স উপর।
টম

6

আপনি নিজের পরিবেশ সেট করে, সিকুইলাইজের ডিবাগ মডিউলটি ব্যবহারের সুবিধাও নিতে পারেন, এভাবে: DEBUG=sequelize:sql* আপনার অ্যাপ্লিকেশন শুরু করার আগে।


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