我已经看到很多与流星方法有关的问题,但没有一种解决方案适合我。我正在尝试实现我的收藏夹中的_id字段并对其进行自动递增。

这是我的文件:

server/methods.js

Meteor.methods({

getNextSequence: function(counter_name) {

    if (Counters.findOne({ _id: counter_name }) == 0) {

        Counters.insert({
            _id: counter_name,
            seq: 0
        });

        console.log("Initialized counter: " + counter_name + " with a sequence value of 0.");
        return 0;
    }

    Counters.update({
        _id: counter_name
    }, {
        $inc: {
            seq: 1
        }
    });

    var ret = Counters.findOne({ _id: counter_name });
    console.log(ret);
    return ret.seq;
}

});



lib/collections/simple-schemas.js

Schemas = {};

Schemas.Guests = new SimpleSchema({
    _id: {
        type: Number,
        label: "ID",
        min: 0,
        autoValue: function() {
            if (this.isInsert && Meteor.isClient) {
                Meteor.call("getNextSequence", "guest_id", function(error, result) {
                    if (error) {
                        console.log("getNextSequence Error: " + error);
                    } else {
                        console.log(result);
                        return result;
                    }
                });
            }
            // ELSE omitted intentionally
        }
    }
});

Guests.attachSchema(Schemas.Guests);


我正在假设一个错误来自简单模式,它说Error: ID must be a Number,但是我的代码正在返回一个数字,不是吗?同样,我的console.log消息没有显示,Meteor.methods调用中的消息。

最佳答案

_id设置optional: trueautoValue将为它提供一个实际值,但是所需的检查在到达autoValue之前失败。

关于javascript - meteor 的简单模式,方法不返回数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34726336/

10-11 14:24