当前位置:  开发笔记 > 编程语言 > 正文

如何在KeystoneJS中创建唯一键

如何解决《如何在KeystoneJS中创建唯一键》经验,为你挑选了0个好方法。

我正在使用KeystoneJS构建的网站,该网站允许用户发布单词并从其他用户获取建议的同义词.单词是作为短语或句子的一部分提交的,例如"猫是[危险地]接近敲击玻璃."

My Sentence模型如下所示:

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 }
});

我试图根据Mongoose文档使Word模型独一无二:

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 [word] -1,[word] -2等来生成该单词的第二个实例.

我需要能够查询使用特定单词的所有句子,所以每个单词我真的需要一个项目.但对于我的生活,我无法弄清楚如何使一个领域独一无二.

当我从负责接受AJAX请求的路由添加新Word时,我的问题可能就出现了:

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只会更新一个现有的独特领域?

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有