तो मैं एक प्रकार POINT कॉलम में डालने के लिए pg-promise का उपयोग कर रहा हूं। लेकिन यह मुझे निम्न त्रुटि दे रहा है:

function point(integer[]) does not exist

मैं मानों को सरणी के रूप में पास कर रहा हूं। इसे काम करने के लिए मुझे क्या बदलना चाहिए?

कुछ कोड (सुनिश्चित नहीं है कि उपयोगी है):

simplified_query = `$${counter++}:name = POINT($${counter++})`

fields =
[
    "geolocation",
    [10, 10]
]
1
A. L 11 फरवरी 2019, 22:44

1 उत्तर

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

कस्टम टाइप फ़ॉर्मेटिंग के अनुसार, यदि आपका field ['geolocation', [10, 10]] है, पहला मान कॉलम नाम होने के साथ, आप निम्न फ़ंक्शन का उपयोग कर सकते हैं:

function asPoint(field) {
    return {
        rawType: true,
        toPostgres: () => pgp.as.format('$1:name = POINT($2:csv)', field)
    };
}

फिर आप asPoint(field) को क्वेरी-फ़ॉर्मेटिंग पैरामीटर के रूप में उपयोग कर सकते हैं:

const field = ['geolocation', [10, 10]];
db.any('SELECT * FROM table WHERE $1', [asPoint(field)])
//=> SELECT * FROM table WHERE "geolocation" = POINT(10, 10)

वैकल्पिक रूप से, आपका field एक कस्टम-प्रकार वर्ग हो सकता है जो कस्टम प्रकार स्वरूपण या तो स्पष्ट रूप से या प्रोटोटाइप के माध्यम से, जिस स्थिति में इसे सीधे स्वरूपण पैरामीटर के रूप में उपयोग किया जा सकता है।

1
vitaly-t 13 फरवरी 2019, 14:52