2016-05-19 2 views
0

Удивление это еще не просил (ну я не могу найти), но позволяет сказать, что я использую запрос:

db.find('this.CustomerPurchaseOrderNumber.indexOf("value") !== -1') 

3/4s моих данных имеет CustomerPurchaseOrderNumber как строку, но некоторые из них имеют как нуль, в результате этой ошибки:

error: { 
    "$err" : "TypeError: Cannot call method 'indexOf' of null near 'value\") !== -1' ", 
    "code" : 16722 
} 
  1. Я должен использовать «JavaScript функция» как запрос
  2. Я не имею контроль над данными

Вопрос в том, можно ли передать какой-то флаг «throwIsFalse», что означает, что всякий раз, когда эта функция вызывает ошибку, строка не сопоставляется?

Спасибо ребята

ответ

1

Вы не должны использовать $where запрос для этого, как вы можете сделать это более эффективно (и без проблем вы ударяя) как:

db.find({CustomerPurchaseOrderNumber: "value"}) 

Но если вы необходимо использовать $where запрос по какой-то причине, вам просто нужно будет проверить, что на самом деле существует CustomerPurchaseOrderNumber перед вызовом indexOf на нем:

db.find('this.CustomerPurchaseOrderNumber && this.CustomerPurchaseOrderNumber.indexOf("value") !== -1') 
+0

Вы на 100% прав насчет эффективности, но моя проблема заключается в том, что запросы передаются из oData, поэтому у меня нет простого способа сделать их объектами. –

+0

@RoderickObrist Рад, что это помогло. Но имейте в виду, что ни одна производственная система не должна основываться на использовании запросов '$ where' для всего, так как производительность будет ужасной в любых масштабах. – JohnnyHK