मैं एक MongoDB डेटाबेस से डेटा की एक सरणी खींचने की कोशिश कर रहा हूँ, और जब कोड जंग खा रहा है (और मैं इस पर कुछ सुधार चाहता हूँ अगर यह बेहतर किया जा सकता है या कुछ याद आ रही है या गलत है), इसे लेना चाहिए सरणी, "उपयोगकर्ता" और "विवरण" ऑब्जेक्ट ढूंढना, और फिर उन्हें एक डिस्कोर्ड.जेएस संदेश में डालना।

मैंने वस्तुओं को व्यक्तिगत रूप से संदर्भित करने, उन्हें तार बनाने, डेटा को पार्स करने का प्रयास किया है, लेकिन मुझे अभी भी यह नहीं पता कि इसे कैसे किया जाए। यहां वह कोड है जिसका मैं उपयोग कर रहा हूं।

  module.exports.run = async (bot, message, args) => {
    const MongoClient = require('mongodb').MongoClient;
    const url = 'mongodb+srv://something:something@something/test?retryWrites=true&w=majority';
    const assert = require('assert');
    try {
        function remindersChecker() {
            let mongoClientPromise = MongoClient.connect(url, function (err, client) {
                const db = client.db("reminders");
                let date = new Date().getTime();
                let now = Math.floor(Date.now() / 1000);
                db.collection("reminders").find().toArray(function (err, result) {
                    let data = JSON.toObject();
                    console.log(data);
                    let user = data.author
                    let description = data.description
                    console.log(user);
                    user.send("I have a reminder for you! " + description)
                })
            })
        }
        remindersChecker()
    } catch(err) {
        catchError()
    }

}}
     module.exports.help = {
        name: "check"
    }

(कमांड अस्थायी है और बाद में सेटटाइमआउट पर उपयोग किया जाएगा, इसलिए केवल सादे पुराने कोड के बजाय फ़ंक्शन।)

धन्यवाद! और मुझे उम्मीद है कि मुझे जल्द ही मदद मिल सकती है।

1
Sbss1111 5 अक्टूबर 2019, 04:46

1 उत्तर

सबसे बढ़िया उत्तर

समस्या को बेहतर ढंग से समझने के लिए शायद कुछ और जानकारी बहुत अच्छी होगी। जो मैं यहां देख सकता हूं, आप अपने डेटाबेस से एक ऑब्जेक्ट प्राप्त कर रहे हैं और इसे यहां एक सरणी में परिवर्तित कर रहे हैं:

db.collection("reminders").find().toArray(function (err, result) {...

अब वह सरणी वास्तव में कॉलबैक से प्राप्त परिणाम है और आप इसका उपयोग बिल्कुल नहीं कर रहे हैं, आपको शायद उस पर फिर से चलना होगा।

साथ ही मुझे याद है कि मैं लिखता था

...find({})..

SQL में SELECT*FROM के रूप में डेटाबेस में खोजने के लिए। शायद वह भी मदद कर सकता है।

उम्मीद है ये मदद करेगा।

1
Matteo 5 अक्टूबर 2019, 16:58