好的我一直在研究如何在_id
字段而不是string
中尝试使用自动增量int,现在我使用mrt:mongo-counter
进行自动增量并{{1直接访问mongoDB。我有一个Meteor集合名称场地
peerlibrary:directcollection
我已尝试使用Venues = new Mongo.Collection("venues");
字段中的int的所有不同方式,因为我知道Meteor不允许除_id
或string
以外的其他标识符,所以对于解决这个问题?
这是我的代码:
ObjectId
我也尝试过:
function makeNewId(){
return incrementCounter("venueId",1);
}
var venueDirect = new DirectCollection(Venues, makeNewId);
var _venueId = venueDirect.insert(
{
userId : _userId,
created : new Date(),
name : "",
description : "",
cover : "",
image : "",
location : "",
suspended : false,
visible : false
}
);
没有结果。
如何在流星中找到 var _venueId = Venue.insert(
{
_id : incrementCounter("venueId",1),
userId : _userId,
created : new Date(),
name : "",
description : "",
cover : "",
image : "",
location : "",
suspended : false,
visible : false
}
);
作为int
工作的解决方法
答案 0 :(得分:0)
我最后这样做的是将id
号码存储为string
格式,所以现在你的序列为"1"
"2"
等...不是最好的解决方案,但我发现,让我的项目中的大多数开发人员高兴-sigh -
答案 1 :(得分:0)
我花了一些时间来挖掘。似乎大多数流星用户群都不倾向于使用整数ID。有些人甚至建议将整数id保存在单独的字段中。我没有真正的选择,因为我有一个带有int ID的现有数据库。
无论如何,最后 rawCollection 来救我。
Venues = new Mongo.Collection("venues");
VenuesRawCollection = Venues.rawCollection();
VenuesRawCollection.insert(
{
_id : Venues.findOne({}, {sort: {_id: -1}})._id + 1,
userId : _userId,
created : new Date(),
name : "",
description : "",
cover : "",
image : "",
location : "",
suspended : false,
visible : false
}
);
注意:公平警告。通过使用rawCollection,您将从SimpleSchema / collections2中释放任何autoValue魔法。