Невозможно вызвать методы на бит - PullRequest
5 голосов
/ 03 октября 2019

Я пытаюсь проверить, пересекаются ли два географических объекта, и удалить перекрывающиеся части (не выполняя эту часть в фрагменте кода ниже). Пожалуйста, найдите код ниже. Это дает мне ошибку

Невозможно вызвать методы для бита.

Я использую библиотеку mssql и использую узел 10. Я не могу найти ничего относительно этой ошибки. Я хочу знать, если это ошибка кода или какая-то проблема с библиотекой mssql. Если это так, как я могу решить эту проблему?

***** ОБНОВЛЕНИЕ ****** Это дает только эту ошибку для STIntersects (), отлично работает для STIntersection () и STDifference.

const sql = require('mssql');
        let path1 = `geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326).MakeValid()`;
        let path2 = `geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326).MakeValid()`;
        let query = `SELECT ${path1}.STIntersects(${path2}).ToString();
        SELECT ${path1}.STIntersection(${path2}).ToString();`;
        let dbConfig = {
            user: 'username',
            password: 'password',
            server: 'localhost',
            database: 'db_name',
            port: port,
            connectionTimeout: 30000,
            requestTimeout: 180000,
            max: 15,
            min: 3,
            idleTimeoutMillis: 30000
        };

        sql.connect(dbConfig, err => {
            if (err)
                throw err;
            console.log('Success');
            queryExecuter();

        });

        let queryExecuter = async () => {
            try {
                let request = new sql.Request();
                let result1 = await request.query(query)

                console.log(result1)
            } catch (err) {
                console.log(err)
                // ... error checks
            }
        }

        sql.on('error', err => {
            console.log(err)
            // ... error handler
        })

1 Ответ

0 голосов
/ 03 октября 2019

По сути, я просто пытался вызвать функцию ToString () для бита, который является возвращаемым типом STIntersects (), который не поддерживается / не требуется в SQL. Спасибо @Jeroen Mostert за то, что он убрал эту двусмысленность.

...