2013-03-12 144 views
0

JavaScript數組這個工程發現從流星的MongoDB

Template.kanjifinder.kanjicharacters = function() { 
    console.log("kanjlist"); 
    return kanji.find({cardid: {$in:[1,2]}}, {sort: {cardid: 1}}); 
}; 

但有一種方式來代替這種硬編碼陣列[1,2]用JavaScript數組?

var str = "123456" 
var cardids = str.split(""); 

if (Meteor.isClient) { 
    Template.kanjifinder.kanjicharacters = function() { 
     console.log("kanjlist"); 
     return kanji.find({cardid: {$in: **cardids** }}, {sort: {cardid: 1}}); 
    } 
}; 
+0

添加到您的流星包什麼是您的收藏漢字中文件是什麼樣子? – Akshat 2013-03-12 17:00:49

+0

嗯,我只是在這裏使用'cardid'作爲測試。最終,我會試圖找到日本漢字字符,而不是cardid號碼。但我暫時不想陷入utf-8的問題。基本上是:'CardId中:9 漢字:「中」 卷:「系列第2卷1」' – 2013-03-12 17:03:54

回答

3

你只需要在你的字符串使用一個分隔符,你可以做這樣的說法在你的代碼也一樣,但問題是2個位數:

var str = "1,2,3,4,5,6" //<<--- use a seperator here 
var cardids = str.split(","); //<<-- 

//remove this line if you intend to use strings in your db instead of integers 
cardids = _.map(function(card) { return parseInt(card);}); 

if (Meteor.isClient) { 
    Template.kanjifinder.kanjicharacters = function() { 
    console.log("kanjlist"); 
    return kanji.find({cardid: {$in:cardids}}, {sort: {cardid: 1}}); 
    }; 
} 

我使用下劃線到字符串轉換爲整數,如果你不已經擁有了它它meteor add underscore

+0

不分離,你只是得到一個字符數組(這是我想要的)。如我寫CONSOLE.LOG(cardids)='[ 「1」, 「2」, 「3」, 「4」, 「5」, 「6」]'。但是,當我把cardid:{$ in:cardids}}我沒有結果。 – 2013-03-12 17:06:36

+1

我看,上面都是字符串和MongoDB有整數,你在你的包都強調? – Akshat 2013-03-12 17:08:18

+0

它是一個類型問題?即$ in不喜歡在字符串中尋找數字? – 2013-03-12 17:08:28