使用_id集合Meteor作为整数

时间:2015-02-25 06:39:33

标签: javascript meteor

好的我一直在研究如何在_id字段而不是string中尝试使用自动增量int,现在我使用mrt:mongo-counter进行自动增量并{{1直接访问mongoDB。我有一个Meteor集合名称场地

peerlibrary:directcollection

我已尝试使用Venues = new Mongo.Collection("venues"); 字段中的int的所有不同方式,因为我知道Meteor不允许除_idstring以外的其他标识符,所以对于解决这个问题?

这是我的代码:

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工作的解决方法

2 个答案:

答案 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魔法。