gpt4 book ai didi

javascript - Meteor.js - 在方法上创建一个自动增量字段

转载 作者:行者123 更新时间:2023-11-30 09:59:09 25 4
gpt4 key购买 nike

这是写入数据集合“Projects”的方法“saveProject”。

Meteor.methods({
'saveProject': function (project) {
check(project.name, String);
currentId = Projects.findOne({},{sort:{id:-1}}).id || 1;
project.id = currentId + 1;
project.userId = Meteor.userId();
project.dateentered = new Date();
project.lastupdate = new Date();
if (!project.datedue) {
project.datedue = new Date();
}
project.invited = [];
return Projects.insert(project);
}
});

此代码创建一个给定的命名“id”并为保存的“项目”分配自动编号。

currentId = Projects.findOne({},{sort:{id:-1}}).id || 1;
project.id = currentId + 1;

问题是此代码仅在集合首先保存为“项目”时才有效。如何修改此代码以在将初稿写入数据集合“项目”时工作更长时间

最佳答案

我建议为自动递增序列字段创建一个单独的集合。

例如:

if (Meteor.isServer) {
Meteor.startup(function () {
Counters._ensureIndex({"type": 1});
if (Counters.find({type: "projectId"}).count() == 0) Counters.insert({type: "projectId", seq: 0});
Projects.insert({seq: getNextSequence("projectId"), name: "Project 1"});
Projects.insert({seq: getNextSequence("projectId"), name: "Project 2"});
Projects.insert({seq: getNextSequence("projectId"), name: "Project 3"});
Projects.insert({seq: getNextSequence("projectId"), name: "Project 4"});
});
}

Projects = new Mongo.Collection("projects");
Counters = new Mongo.Collection("counters");

getNextSequence = function (name) {
Counters.update({type: name}, {$inc: {seq: 1}});
var ret = Counters.findOne({type: name});
return ret.seq;
};

输出:

{ "_id" : "vMmxNRCxroicxYftf", "seq" : 1, "name" : "Project 1" }
{ "_id" : "g8EMSooQK7JQ8bTNL", "seq" : 2, "name" : "Project 2" }
{ "_id" : "RZw3JxnMohinJ5x3g", "seq" : 3, "name" : "Project 3" }
{ "_id" : "BEoyoo3jJPRCgjTuc", "seq" : 4, "name" : "Project 4" }

关于javascript - Meteor.js - 在方法上创建一个自动增量字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32581580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com