我正在使用meteor / angular进行项目,我希望在插入元素时使用id来获取id
我的代码==>
collection.insert({
name: name,
birthDay: birthDay ,
birthPlace:birthPlace,
nationalities:nationalities,
fields : fields
});
我试试这个,但它不起作用
const col = collection.insert({
name: name,
birthDay: birthDay ,
birthPlace:birthPlace,
nationalities:nationalities,
fields : fields
});
console.log(col);
答案 0 :(得分:0)
Meteor中的数据库操作和方法调用默认情况下 在服务器上是同步的,在客户端上是异步的。这意味着
collection.insert({ ... });
只有在服务器上调用时,才会返回id。如果你想在客户端中插入id,你必须使用回调,因为它是异步的:
collection.insert({ ... }, function (err, insertedId) {
if (err) {
throw err; // handle error your preferred way
}
// do something with insertedId
console.log(insertedId);
});
答案 1 :(得分:0)
我猜你的collection
变量不是标准的Meteor' Mongo.Collection
,而是meteor-rxjs' MongoObservable.Collection
,insert()
方法返回 Observable 而不是新插入的文档ID。
即。你做过类似的事情:
const meteorRxjsCollection = new MongoObservable.Collection('collectionName');
在这种情况下,您有2个简单的解决方案:
const newDocId = meteorRxjsCollection.collection.insert(newDoc);
insert
方法返回的Observable,获取ID,方式与在Meteor insert
中使用回调类似:const sub = meteorRxjsCollection.insert(newDoc).subscribe(function (newDocId) {
sub.unsubscribe();
// use newDocId…
});