Поддерживает ли «отличная» функция mongoose регулярное выражение в запросе? - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть следующий бит js в проекте node / mongoose.Я работаю над автозаполнением формы.Он отлично работает с обычной «находкой», но вместо этого я хочу сделать «отличную» находку.

Итак, вот где я сейчас нахожусь.Я считаю, что проблема в том, как формируется запрос.Может кто-нибудь помочь с моим синтаксисом в отдельной строке?Или просто «отличный» mongoose не поддерживает регулярные выражения в необязательном запросе?

var text.term = 'johnny';
var regex = new RegExp("^"+text.term);
// execute the search
Performance.collection.distinct({lc_actor: regex}, function(err, docs) {
    var names = [];
    for(var nam in docs) {
        // push the lc_actor to the array
    names.push(docs[nam].lc_actor);
    }
    // send back via callback function
    callback(null, names);
});

И вот что показывает моя супер-многословная (-vvvvvvvvvvvvv) консоль mongoose:

Tue Nov 29 13:34:30 [conn1] runQuery called mydb.$cmd { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } }
Tue Nov 29 13:34:30 [conn1] run command mydb.$cmd { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } }
Tue Nov 29 13:34:30 [conn1] command mydb.$cmd command: { distinct: "performances", query: {}, key: { lc_actor: /^johnny/ } } ntoreturn:1 reslen:140 526ms

Есть идеи?

1 Ответ

2 голосов
/ 29 ноября 2011

Отвечая на мой собственный вопрос.У меня действительно были синтаксические ошибки в отличном методе Мангуста.Он принимает 3 параметра, у меня было только 2. Правильный синтаксис с регулярным выражением (или любым условием):

Performance.collection.distinct('lc_actor', {lc_actor: regex}, function(err, docs) {

Из документов Mongoose для Model.distinct ():

Model.distinct(field, conditions, callback);

http://mongoosejs.com/docs/finding-documents.html

...