【问题标题】:Get inserted document id in Meteor MongoObservable在 Meteor MongoObservable 中获取插入的文档 ID
【发布时间】:2017-02-17 13:26:17
【问题描述】:

所以,我正在按照 angular2-meteor 样板中的建议创建集合:

export const BookCollection = new MongoObservable.Collection<Book>('books');

所以,如果我这样写:

BookColletion.insert(..., callback_f);

我收到一个错误,第二个参数不存在。那么,我应该如何获取最后插入的文档的 id?

【问题讨论】:

  • 你在哪里以及如何定义callback_f
  • 另外,MongoObservable 是什么?您是否想使用Mongo.Collection,然后使用BookCollection.find().observeChanges({..
  • callback_f(err, docId){console.log(docId)} 有效,但我没有使用那种类型的集合...

标签: mongodb meteor angular


【解决方案1】:

我不确定MongoObservable 是什么,也不确定&lt;Book&gt; 语法是什么意思,但我怀疑你想要的是这样的:

export const BookCollection = new Mongo.Collection('books');
BookCollection.find().observe({
  added(document) {
    // document is the newly added document
  }
});

【讨论】:

  • 但是当我这样做时,在 console.log(document) 我有所有文件,一一记录。这是pic。我需要最新的,我怎样才能做到这一点?
  • 这是一个反应块。随着元素的添加,最新添加的将始终是最新显示的。它在添加后立即显示。这不是你想要的吗?如果您只想要所有项目中的最后一项(静态),那么您需要对它们进行排序,但这不需要观察者。
  • 我需要最新插入的 _id 用于重定向目的。
  • 谢谢。 MongoObservable 返回,对于对集合执行的每个操作(插入、添加等),Observable 而不是StringCursor 等。&lt;Book&gt; 设置 mongo 集合的文档模型.
  • 有什么解决办法吗?
【解决方案2】:

你可以像这样获取插入的id:

var insertedId = BookColletion.collection.insert();

如上所述here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    相关资源
    最近更新 更多