क्वेरी के निष्पादन पर कंसोल के लिए SQL आउटपुट से अनुक्रम को रोकें?


187

मेरे पास उपयोगकर्ता के प्रोफ़ाइल को पुनः प्राप्त करने के लिए एक फ़ंक्शन है।

app.get('/api/user/profile', function (request, response)
{
  // Create the default error container
  var error = new Error();

  var User = db.User;
  User.find({
    where: { emailAddress: request.user.username}
  }).then(function(user)
  {
    if(!user)
    {
      error.status = 500; error.message = "ERROR_INVALID_USER"; error.code = 301;
      return next(error);
    }

    // Build the profile from the user object
    profile = {
      "firstName": user.firstName,
      "lastName": user.lastName,
      "emailAddress": user.emailAddress
    }
    response.status(200).send(profile);
  });
});

जब "खोज" फ़ंक्शन को कहा जाता है तो यह कंसोल पर चयन स्टेटमेंट को प्रदर्शित करता है जहां सर्वर शुरू किया गया था।

Executing (default): SELECT `id`, `firstName`, `lastName`, `emailAddress`, `password`, `passwordRecoveryToken`, `passwordRecoveryTokenExpire`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`emailAddress` = 'johndoe@doe.com' LIMIT 1;

क्या इसे प्राप्त करने का एक तरीका है प्रदर्शन नहीं होना? कुछ झंडे जो मैंने एक विन्यास फाइल में कहीं सेट किए हैं?


मेरे पास एक सवाल है, मान लीजिए कि मैं नहीं चाहता कि पासवर्ड फ़ील्ड findOrCreate () विधि में वापस आए। मैं यह कैसे कर सकता हूँ ?
सुनील शर्मा

@SunilSharma विशेषता को छोड़कर, excludeइस पृष्ठ पर अगली कड़ी के
Karel Frajták

जवाबों:


356

जब आप अपनी अनुक्रम वस्तु बनाते हैं, falseतो loggingपैरामीटर को पास करें :

var sequelize = new Sequelize('database', 'username', 'password', {

  // disable logging; default: console.log
  logging: false

});

अधिक विकल्पों के लिए, डॉक्स की जांच करें ।


23
आप बमुश्किल से संबंधित एक नए प्रश्न को पिगबैकबैक करने की कोशिश से एक नया प्रश्न शुरू करने से बेहतर हैं।
तत्पश्चात

धन्यवाद, यह काम कर रहा है, हालांकि यह निष्पादित प्रत्येक क्वेरी के लिए एक सफेद स्थान देता है। क्या आप कृपया मेरी मदद कर सकते हैं ..
तिजो टॉम

1
अभी के लिए, loggingविकल्प एक फ़ंक्शन होना चाहिए ।
ली हान कियोल

1
सीक्वीज़ v4 का उपयोग करते समय इसका प्रभाव नहीं दिखता है। किसी को भी संकल्प मिला?
गार्बव

37

यदि 'config / config.json' फ़ाइल का उपयोग किया जाता है, तो 'लॉगिंग' जोड़ें: config .json के लिए इस मामले में गलत है।

  // file config/config.json
  {
      {
      "development": {
        "username": "username",
        "password": "password",
        "database": "db_name",
        "host": "127.0.0.1",
        "dialect": "mysql",
        "logging": false
      },
      "test": {
    ...
   }

26

अन्य उत्तरों की तरह, आप बस सेट कर सकते हैं logging:false, लेकिन मुझे लगता है कि लॉगिंग पूरी तरह से अक्षम करने से बेहतर है, आप बस अपने ऐप में लॉग लेवल को अपना सकते हैं। कभी-कभी आप निष्पादित प्रश्नों पर एक नज़र डालना चाह सकते हैं ताकि सीक्वेलाइज़ को स्तर वर्बोज़ या डीबग पर लॉग इन करना बेहतर हो सके। उदाहरण के लिए (मैं यहां एक लॉगिंग फ्रेमवर्क के रूप में वाइनस्टोन का उपयोग कर रहा हूं लेकिन आप किसी अन्य फ्रेमवर्क का उपयोग कर सकते हैं):

var sequelize = new Sequelize('database', 'username', 'password', {
  logging: winston.debug
});

यह SQL स्टेटमेंट को केवल तभी आउटपुट करेगा जब winston log लेवल डिबग या लोअर डीबगिंग लेवल पर सेट हो। यदि लॉग स्तर चेतावनी है या उदाहरण के लिए जानकारी SQL लॉग नहीं किया जाएगा


6

इन सभी उत्तरों को सृजन समय पर लॉगिंग बंद कर दिया जाता है ।

लेकिन क्या होगा अगर हमें रनटाइम पर लॉगिंग को बंद करने की आवश्यकता है?

फ़ंक्शन sequelizeका उपयोग करके ऑब्जेक्ट को इनिशियलाइज़ करने के बाद रनटाइम से मेरा मतलब है new Sequelize(..

मैंने गितुब स्रोत में झाँका , रनटाइम में लॉगिंग को बंद करने का एक तरीका मिला।

// Somewhere your code, turn off the logging
sequelize.options.logging = false

// Somewhere your code, turn on the logging
sequelize.options.logging = true 

2

इस चर्चा के आधार पर, मैंने इसका निर्माण किया config.jsonजो पूरी तरह से काम करता है:

{
  "development": {
    "username": "root",
    "password": null,
    "logging" : false,
    "database": "posts_db_dev",
    "host": "127.0.0.1",
    "dialect": "mysql",
    "operatorsAliases": false 
  }
}

1

यहाँ मेरा जवाब है:

संक्षिप्त : मैं typeormएक ORM पुस्तकालय के रूप में उपयोग कर रहा था । इसलिए, क्वेरी लॉगिंग स्तर सेट करने के लिए मैंने लॉगिंग विकल्प को सीधे सेट करने के बजाय निम्न विकल्प का उपयोग किया है false

समाधान: फ़ाइल नाम - ormconfig.ts

{
    'type': process.env.DB_DRIVER,
    'host': process.env.DB_HOST,
    'port': process.env.DB_PORT,
    'username': process.env.DB_USER,
    'password': process.env.DB_PASS,
    'database': process.env.DB_NAME,
    'migrations': [process.env.MIGRATIONS_ENTITIES],
    'synchronize': false,
    'logging': process.env.DB_QUERY_LEVEL,
    'entities': [
        process.env.ORM_ENTITIES
    ],
    'cli': {
        'migrationsDir': 'migrations'
     }
}

और, एनवायरनमेंट चर DB_QUERY_LEVELमें ["क्वेरी", "त्रुटि"] सेट करें।

परिणाम: परिणामस्वरूप यह केवल तभी लॉग करेगा जब क्वेरी में त्रुटि है और यह नहीं होगा।

Ref लिंक: typeorm db query लॉगिंग डॉक

उम्मीद है की यह मदद करेगा! धन्यवाद।


0

मैं सीक्वेलाइज़ ओआरएम 6.0.0 का उपयोग कर रहा हूं और "लॉगिंग" का उपयोग कर रहा हूं: बाकी के रूप में गलत लेकिन ओआरएम के नवीनतम संस्करण के लिए मेरे जवाब को पोस्ट किया।

const sequelize = new Sequelize(
        process.env.databaseName,
        process.env.databaseUser,
        process.env.password,
        {
            host: process.env.databaseHost,
            dialect: process.env.dialect,
            "logging": false,
            define: {
                // Table names won't be pluralized.
                freezeTableName: true,
                // All tables won't have "createdAt" and "updatedAt" Auto fields.
                timestamps: false
            }
        }
    );

नोट: मैं .env12-कारक कार्यप्रणाली का अवलोकन करते हुए एक कॉन्फ़िगरेशन फ़ाइल में अपने रहस्यों को संग्रहीत कर रहा हूं ।


0

मैंने निम्नलिखित कोड का उपयोग करके बहुत सारे मुद्दों को हल किया। मुद्दे थे: -

  1. डेटाबेस से नहीं जुड़ रहा है
  2. डेटाबेस कनेक्शन अस्वीकृति मुद्दे
  3. कंसोल में लॉग से छुटकारा पाना (इसके लिए विशिष्ट)।
const sequelize = new Sequelize("test", "root", "root", {
  host: "127.0.0.1",
  dialect: "mysql",
  port: "8889",
  connectionLimit: 10,
  socketPath: "/Applications/MAMP/tmp/mysql/mysql.sock",
  // It will disable logging
  logging: false
});

लोग अभी भी MAMP का उपयोग करते हैं?
तत्पश्चात

हां, विकास के लिए, यदि आपके पास एक और सबसे अच्छा मुफ्त विकल्प है, तो कृपया मुझे बताएं, धन्यवाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.