我已经看到很多与流星方法有关的问题,但没有一种解决方案适合我。我正在尝试实现我的收藏夹中的_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: true
。 autoValue
将为它提供一个实际值,但是所需的检查在到达autoValue
之前失败。
关于javascript - meteor 的简单模式,方法不返回数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34726336/