Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 插入meteor/angular2时如何获取id_Angularjs_Meteor - Fatal编程技术网

Angularjs 插入meteor/angular2时如何获取id

Angularjs 插入meteor/angular2时如何获取id,angularjs,meteor,Angularjs,Meteor,我正在使用meteor/angular进行一个项目,我想在插入一个元素以使用它时获取id 我的代码==> collection.insert({ name: name, birthDay: birthDay , birthPlace:birthPlace, nationalities:nationalities, fields : fields }); 我试过了,但没

我正在使用meteor/angular进行一个项目,我想在插入一个元素以使用它时获取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);

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);
});

我猜您的
集合
变量不是标准的Meteor变量,而是Meteor rxjs',它
insert()
方法返回一个可观察的,而不是新插入的文档ID

也就是说,你做了如下事情:

const meteorxjscollection=new MongoObservable.Collection('collectionName');
在这种情况下,您有两个简单的解决方案:

  • 访问Meteor的Mongo收藏Meteor rxjs包装:
const newDocId=Meteorxjscollection.collection.insert(newDoc);
  • 订阅meteor rxjs方法返回的Observable,以获得ID,方式与使用meteor的
    插入中的回调类似:
const sub=Meteorxjscollection.insert(newDoc.subscribe)(函数(newDocId){ sub.取消订阅(); //使用newDocId… });
您应该在尝试时在col变量中获取ID。你能提供更多的代码吗?你的
集合
变量是Meteor rxjs'还是Meteor的?我正在使用MongoObservable.collection可能是