我正在建在KeystoneJS一個網站,允許用戶發佈文字和從其他用戶獲得建議同義詞創建唯一的密鑰。單詞是作爲短語或句子的一部分提交的,例如「貓[危險]接近敲開玻璃杯。」如何KeystoneJS
我句模型是這樣的:
Sentence.add({
sentence: { type: Types.Text, required: true, initial: "New Sentence", index: true },
word: { type: Types.Relationship, ref: 'Word', required: true, index: true, unique: true, initial: true },
submitter: { type: Types.Relationship, ref: 'User', required: true, index: true, unique: true, initial: true },
source: { type: Types.Text },
createdAt: { type: Date, default: Date.now }
});
我試圖讓道模型獨特根據貓鼬文檔:
var Word = new keystone.List('Word', {
map: { name: 'word' },
_id: { from: 'word', path: 'word', unique: true, fixed: false}
});
Word.add({
word: { type: Types.Text, required: true, initial: "New word", index: true }
});
但是,如果我提交兩句測試同一個詞,它只是使這個詞與_id [文字]第二個實例-1,[文字] -2等
我需要能夠查詢使用一個特定的詞所有句子,所以我每個單詞真的需要一個項目。但對於我的生活,我無法弄清楚如何創造一個獨特的領域。
有可能我的問題是,當我從路由添加一個新的Word負責接受AJAX請求:
var newWord = new Word.model({
word: req.body.word // read from the input box on the home page
});
newWord.save(function(err) {
if (err) {
console.error(err);
}
});
但我認爲.save
只會更新現有的唯一字段?
我仍然越來越多當我直接查看Mongo數據庫時,查找同一個詞的條目。如果我將兩個相同的單詞相加,即使在模型中使用了「{unique:true}」,「_id」也會變成「[單詞] -1」。我也看到這個錯誤:'{[CastError:Cast to ObjectId失敗的值'{word:'sleek'}「在路徑」word「]' –
實際上,Cast到ObjectId是不相關的,但是甚至如果我使用_id的默認ObjectId,則設置'unique:true'仍然會生成一個新條目 –