2017-02-01 5 views
5

मैं अपने प्रोजेक्ट के लिए नोडजेएस, एक्सप्रेस और माइस्क्लुएल का उपयोग कर रहा हूं और इसके साथ बुकशेल्फ़ ओआरएम का उपयोग करना चाहता हूं।नोडजेस में केनेक्स कनेक्शन को सुनिश्चित करने के लिए

बुक्सहेल्फ़ क्वेरीिंग, मॉडलिंग और केनेक्स (http://bookshelfjs.org/#installation) के माध्यम से डीबी कनेक्शन सेट करने के लिए केनेक्स का उपयोग करता है।

मुझे केनेक्स के साथ एक सफल डीबी कनेक्शन स्थापित करने में समस्या हो रही है। मैं केवल सर्वर शुरू करना चाहता हूं अगर डीबी कनेक्शन सफल हो, लेकिन ऐसा लगता है कि ऐसा करने के लिए कनेक्शन स्थापित करने के बाद कुछ भी ऑफर नहीं करता है (कोई वादा या संपत्ति नहीं)।

यह वह कोड है जिसका मैं उपयोग कर रहा हूं।

import _knex from "knex"; // npm install knex --save 
import _bookshelf from "bookshelf"; // npm install bookshelf --save 

let knex = _knex({ 
    client: "mysql", 
    connection: { 
     host: "127.0.0.1", 
     database: process.env.DB, 
     user: process.env.DB_USERNAME, 
     password: process.env.DB_PASSWORD 
    }, 
    debug: true 
}); 

let bookshelf = _bookshelf(knex); 

module.exports.knex = knex; 
module.exports.bookshelf = bookshelf; 

अधिक संदर्भ: एक और ORM Sequelize नामित नहीं है और यह sequelize.authenticate() जो वादा लौट सकते हैं और के रूप में (http://docs.sequelizejs.com/en/latest/api/sequelize/#authenticate-promise)

sequelize.authenticate() 
    .then(() => { 
     console.log("Db successfully connected"); 
     app.listen(port,() => console.log(`App started at: ${port}`)); 
    }) 
    .catch(err => console.log('Unable to connect to the database')); 

एकमात्र समाधान मैं के बारे में सोच सकते हैं प्रदर्शन करना है इस्तेमाल किया जा सकता प्रदान करता है USE {DB_NAME} जैसी कच्ची क्वेरी और यह तय करने के लिए अपने आउटपुट का उपयोग करें कि सर्वर शुरू करना है या नहीं। क्या यह समाधान काफी अच्छा है?

उत्तर

4

इस सप्ताह के शुरू में इस चर्चा के पहले knex अंक ट्रैकर में चर्चा की गई थी। https://github.com/tgriesser/knex/issues/1886

क्वेरी बनाना यह जांचने का एक अच्छा तरीका है कि कनेक्शन डेटाबेस में किया जा सकता है। यदि कोई प्रश्न नहीं बनाया जाता है, तो पूल आवश्यक नहीं बनाता है प्रारंभिक कनेक्शन (पूल सेटिंग्स पर निर्भर करता है)।

आप डेटाबेस के https://github.com/knex/documentation/pull/17/files) पर कभी भी नया कनेक्शन होने पर आपको सूचित करने के लिए पूल के afterCreate कॉलबैक को भी तार कर सकते हैं।

संबंधित मुद्दे