流星collection2不在客户端验证

时间:2018-06-21 15:01:05

标签: mongodb reactjs meteor simple-schema meteor-collection2

我正在将collection2与流星一起使用以设置默认值。但是,当我在客户端上运行方法Meteor.call('commands.insert', {})时,它只是设置新文档的ID,并且只有当服务器的结果到来时,它才用正确的值替换该文档。实际上,autoValue函数在客户端上运行是因为当我在console.log上登录时(也尝试了defaultValue),但是它不执行任何操作,不进行任何修改或unique: true都在工作,该模式中指定的任何属性

服务器

export const Commands = new Mongo.Collection('commands')

Commands.schema = new SimpleSchema({
designation: {
    type: String,
    autoValue: function() {
        console.log("inssssssssssssssssssseeeeeeeeeeeeeeeeeeeeeeert")
        if (this.isInsert) {
            return "Untitled"
        }
    },
    unique: true
},
name: {
    type: String,
    autoValue: function() {
        if (this.isInsert) {
            return ""
        }
    },
    optional: true
},
syntax: {
    type: String,
    autoValue: function() {
        if (this.isInsert) {
            return ""
        }
    },
    optional: true
},
description: {
    type: String,
    autoValue: function() {
        if (this.isInsert) {
            return ""
        }
    },
    optional: true
},
features: {
    type: String,
    autoValue: function() {
        if (this.isInsert) {
            return ""
        }
    },
    optional: true},
type: {
    type: String,
    autoValue: function() {
        if (this.isInsert) {
            return ""
        }
    },
    optional: true
},
variants: {
    type: Array,
    autoValue: function() {
        if (this.isInsert) {
            return []
        }
    },
},
'variants.$': {type: String}
})

Commands.attachSchema(Commands.schema)

Meteor.methods({
'commands.insert'(command) {
    if (!this.userId) {
        throw new Meteor.Error('not-authorized')
    }

    Commands.insert(command)
}
})

客户端

 const setNewHandler = this.props.page.animationFinished ?
        this.props.page.editing ?
            textEditorData.length ?
                () => {
                    Meteor.call(
                        'commands.update',
                        textEditorData[0]._id,
                        {
                            designation: 
              this.childComponents[0].editableContentNode.textContent,
                            name: 
              this.childComponents[1].editableContentNode.textContent,
                            syntax: 
              this.childComponents[2].editableContentNode.textContent,
                            type: 
              this.childComponents[3].editableContentNode.textContent,
                            variants: 
  this.childComponents[4].editableContentNode.textContent.split("\n"),
                            description: 
              this.childComponents[5].editableContentNode.textContent,
                            features: 
              this.childComponents[6].editableContentNode.textContent
                        }
                    )
                } :
                null :
            () => {

                Meteor.call('commands.insert', {})
            } :
        null

0 个答案:

没有答案