अद्यतन करें: यह काम कर रहा है नीचे देखें।

मुझे यह छोटी सी स्क्रिप्ट नोड.जेएस का उपयोग करके एक SQL क्वेरी बनाने जा रही है, एक उपयोगकर्ता द्वारा एक डिस्कॉर्ड चैनल (अपरआर्ग) में आपूर्ति किए गए चर का उपयोग करके। विचार यह है कि यह कंसोल में पाया गया डेटा प्रिंट करता है, और यदि क्वेरी शून्य हो जाती है तो कंसोल में "नो रिकॉर्ड" प्रिंट करता है।

यदि क्वेरी को एक रिकॉर्ड मिल जाता है तो बहुत अच्छा काम करता है, लेकिन अगर ऐसा नहीं होता है तो मुझे अभी भी मिलता है

लेखन त्रुटि: अपरिभाषित की संपत्ति 'पंजीकृत_स्वामी' नहीं पढ़ सकता

मैंने कई तरह के समाधानों की कोशिश की है जैसे कि कॉनकैट को दो अलग-अलग प्रश्नों में विभाजित करना और बहुत कुछ, लेकिन मुझे यह त्रुटि फेंकने से रोकने के लिए प्रतीत नहीं होता है।

client.on('message', async message => {
	//Then ignores them if they are from another bot. 
if (message.author.bot) return;
  // Or if they don't have our specified prefix
if (message.content.indexOf(config.prefix) !== 0) return;
	// Or if they aren't in our specified channel
if (message.channel.id === (config.channelid)) {

	// Strips prefix, lowercases command, uppercases args to match db value.
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
const upperArgs = args.map(arg => arg.toUpperCase());

var platequery = "SELECT CONCAT(firstname,' ', lastname) AS registered_owner FROM essentialmode.users where identifier = (Select owner FROM essentialmode.owned_vehicles where plate = '" + upperArgs + "')";

if (command === 'check') {

    var tag = await con.query(platequery, function(err, result) {
      if (err) throw err
      if (tag !== undefined)
      {
       var platedata = (result[0].registered_owner);
        console.log(platedata);
      }
      else console.log("Not found")
    });
  }
}
});

अद्यतन करें: result.length . का उपयोग करके यह काम कर रहा है

if (command === 'check') {

    var tag = await con.query(platequery, function(err, result) {
      if (err) throw err
      if (result.length > 0) {
        if (result)
          console.log("Registerd to " + result[0].registered_owner)
      }
      else console.log('Stolen');
    });
  }
1
AdamDaze 30 अगस्त 2018, 21:13

2 जवाब

इसके गुणों तक पहुँचने का प्रयास करने से पहले आपको यह जाँचना चाहिए कि क्या परिणाम में [0] तत्व है, और फिर जाँच करें कि क्या register_owner परिणाम में है [0]।

वैकल्पिक रूप से, आप लॉश जैसे कुछ का उपयोग कर सकते हैं और _.get(result,'[0].registered_owner',null) कर सकते हैं

  if (typeof tag !== "undefined")
  {
   var platedata = result.length > 0 
     ? 'registered_owner' in result[0]
       ? (result[0].registered_owner) 
       : null
     : null ;
   console.log(platedata);
  }
1
Cody G 30 अगस्त 2018, 21:23
मैं यह जांचने की कोशिश कर रहा हूं कि क्या register_owner मौजूद है, जैसा कि आप ऊपर दिए गए कोड में देख सकते हैं। मुझे यकीन नहीं है कि कैसे जांचना है कि परिणाम में कॉल करने से पहले कोई तत्व है या नहीं। यदि क्वेरी खाली है तो समस्या var = प्लेटडेटा चरण में होती है। लॉश से पूरी तरह अपरिचित। इसके लिए एक और पुस्तकालय की आवश्यकता होगी, है ना? इसे न्यूनतम रखने की कोशिश की जा रही है।
 – 
AdamDaze
31 अगस्त 2018, 08:32
मुझे यह परिणाम के साथ काम कर रहा है। लंबाई, अद्यतन मूल पोस्ट।
 – 
AdamDaze
31 अगस्त 2018, 10:44
if (command === 'check') {

    var tag = await con.query(platequery, function(err, result) {
      if (err) throw err
      if (result.length > 0) {
        if (result)
          console.log("Registerd to " + result[0].registered_owner)
      }
      else console.log('Stolen');
    });
  }
0
AdamDaze 31 अगस्त 2018, 17:14