【问题标题】:findOne return undefined on MeteorfindOne 在 Meteor 上返回 undefined
【发布时间】:2018-03-18 05:10:57
【问题描述】:

我想尽快从我的数据库中获取 _id

 var test = Exemple.findOne({_id: test_id});

我没有定义

但是当我这样做时

var test = Exemple.find({}).fetch()`

我得到了集合的所有数据,像这样。

{ _id: '17SRlRpRSzP339E41A',
    creationIP: 'local',
    state: 
    { label: 'never connected',
    date: Wed Mar 14 2018 12:20:08 GMT+0100 (CET) },
    language: 'en',
    batch: '9zLKCkvSAyxQ4jtDG7_32018',
    creationDate: Wed Mar 14 2018 12:20:08 GMT+0100 (CET) } ]

我只想获取 _id 并将其存储到这样的变量中

var test = Exemple.findOne({_id: test_id});

【问题讨论】:

  • test_id 是否正确?您是否输入了这个值:17SRlRpRSzP339E41A?
  • 是的,先生,我正在输入这个值
  • 你在使用 Promise 吗? findOne 是异步函数。尝试将 .exec() 放在 findOne var test = Example.findOne({_id: test_id}).exec(); 之后
  • @TomMendelson 无法读取 [object Object] 处未定义\n 的属性 \'exec\'
  • 你能等他们吗?在异步函数中。

标签: javascript mongodb meteor


【解决方案1】:

这会在数据库中找到 _id 等于 test_id 的项目:

var test_id = 'abc';
var test = Exemple.findOne({_id: test_id});

如果没有项目的_id 等于这个值,它将返回null。

要获取项目的 id,您可以:

var test = Exemple.findOne({});
var docId = test._id;
console.log(docId);

然而,这将选择一个随机文档返回。您可能想要查询特定项目。

【讨论】:

    【解决方案2】:
    (async function() {
    const test = await Exemple.findOne({_id: test_id});
    console.log(test)
    })()
    

    正如汤姆所指出的,您必须等待承诺兑现

    【讨论】:

    • 我得到 'ReferenceError: test is not defined\n at [object Object]
    • 这对于 Meteor 来说根本不准确
    猜你喜欢
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    相关资源
    最近更新 更多