Javascript Meteor标题验证不起作用

Javascript Meteor标题验证不起作用,javascript,meteor,Javascript,Meteor,我设置了meteor方法来检查当前项目的标题是否已被使用,但我没有收到我指定的警报。下面是我的“PortfolioItems”集合文件 PortfolioItems = new Mongo.Collection('portfolioItems'); Meteor.methods({ portfolioItemInsert: function(portfolioItemAttributes) { check(Meteor.userId(), String);

我设置了meteor方法来检查当前项目的标题是否已被使用,但我没有收到我指定的警报。下面是我的“PortfolioItems”集合文件

PortfolioItems = new Mongo.Collection('portfolioItems');

Meteor.methods({
    portfolioItemInsert: function(portfolioItemAttributes) {
        check(Meteor.userId(), String);
        check(portfolioItemAttributes, {
            title: String
        });

        var portfolioItemWithSameTitle = PortfolioItems.findOne({ title: portfolioItemAttributes.title});
        if (portfolioItemWithSameTitle) {
            return {
                portfolioItemExists: true,
                _id: portfolioItemWithSameTitle._id
            }
        }

        var user = Meteor.user();
        var portfolioItem = _.extend(portfolioItemAttributes, {
            userId: user._id,
            submitted: new Date()
        });

        var portfolioItemId = PortfolioItems.insert(portfolioItem);
        return {
            _id: portfolioItemId
        };
    }
});
以及submit.js文件:

Template.submit.events({
    'submit #submit-form': function(e) {
        e.preventDefault();

        var portfolioItem = {
            title: $(e.target).find('#submit-title').val()
        };

        Meteor.call('portfolioItemInsert', portfolioItem, function(error, result) {
            if (error) {
                return alert(error.reason);
            }

            if(result.portfolioItemWithSameTitle) {
                alert('Title already taken!');
            }

            Router.go('portfolioItemPage', {_id: result._id});
        });
    }
});

另外,该项实际上不会显示为重复项,但警报不会显示为重复项。

Meteor.userId()
更改为
this.userId

像这样

check(this.userId, String);
但警报不会显示为重复

这不会发生,因为检查没有运行,所以
meteor.method
上的返回语句永远不会运行,这就是为什么
if(result.portfolioitemwithsametTitle)
返回false,而您不会收到警报的原因

如果你把这个放进去,你会得到提醒

 if(error) {
    return alert(error.reason);
 }else if(result){
    alert(result)
   }

在submit.js中,我调用了result.portfolioitemwithsametTitle,但它应该是result.portfolioItemExists,因为在方法中,如果出现这种情况,我将变量设置为true。

@Ethaan Ya是一个愚蠢的错误。在submit.hs中,我调用了result.portfolioitemwithsametTitle,但它应该是result.portfolioItemExists,因为在方法中,如果出现这种情况,我将变量设置为true。