我通过 node.js 中的外部 API 获取 JSON 对象,并希望将它们存储在 MongoDB 中。我定义了一个这样的模型:
var Product = new Schema({
id: ObjectId,
name: String});
现在我正在尝试存储一个对象:
JSONProduct = { id: 1234, name: 'The Foo Bar' };
product = new Product(JSONProduct);
product.save();
对象在“products”集合中存储得很好,但是 JSONProduct 中的 id 被 MongoDB 创建的值替换:
{ "id" : ObjectId("119894980274616772006500"), "name" : "The Foo Bar" }
我想在创建的 MongoDB 上使用我的产品 ID 的主要原因是,我想防止产品的重复条目。我通过对外部 API 的 cronjob 触发调用(包括已经存在的 API)获取 JSON Product 对象。也许还有另一种更好的方法来做到这一点?
最佳答案
您正在将字段定义为 ObjectID,但您正在为其分配一个数字。要创建 ObjectID,您需要执行以下操作:
new ObjectId('something');
但是,在您的情况下,这可能不是最好的主意。像这样定义你的模型:
var Product = new Schema({
external_id: {type: Number, unique: true},
name: {type: String},
});
您可以在字段上指定 unique
以为该字段创建唯一索引。
关于mongodb - 在 Mongoose 中使用自定义的 ObjectId 并避免重复输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5558400/