【问题标题】:Meteor Mongo Find Document using ObjectIDMeteor Mongo 使用 ObjectID 查找文档
【发布时间】:2016-03-06 22:54:34
【问题描述】:

以前有人问过这个问题,但我自己都无法理解。

使用 Meteor,我将一个名为 Scrdata 的集合拉入 Select/Option 中。这很好用。在选项内部,我插入了该文档的 _id。一切正常。

<select class="selectfile">
<option>Click to Select</option>
{{#each cwCasesPending}}
<option value="{{_id}}">{{> allcase}}</option>
{{/each}}
</select>

<template name="allcase">
<div > {{last_name}}, {{first_name}}: {{facility}} - {{cwname}}</div>
</template>

我正在尝试做一件非常简单的事情,通过它的 id 找到一个文档:

Template.caselist.events({
'change .selectfile': function(event, tmpl){
var ar = Scrdata.findOne({_id: $(event.target).val()});
console.log($(event.target).find('option:selected').val());
console.log(ar);
}
});

控制台中的结果是:

ObjectID("56dab90a73176cc2deb25aaa")
undefined

我的目标是,在选择块发生变化时,在该页面上填充一个表单。但是,通过 _id 查找不起作用。

感谢您提供任何见解和指导。谢谢。

【问题讨论】:

  • 控制台日志没有相同的基本信息。使用 findOne,您只需使用 $(event.target).val() 而不是 $(event.target).find('option:selected').val()。尝试使用已知的 _id,例如 var ar = Scrdata.findOne({_id: "known_id"});
  • @user2690440 看起来您正在使用 ObjectID,因此您可能需要在调用 findOne 之前先 convert them

标签: mongodb meteor


【解决方案1】:

您的基本想法是使用 id 作为过滤器从数据库中提取文档。如果上面的代码不起作用,您可以尝试几种方法来修复它:

第一种方法是尝试:

var id = $(event.target).find('option:selected').val();
var ar = Scrdata.findOne({_id: id});

如果这显然不起作用,$(event.target).find('option:selected').val() 会返回一些对象。在控制台上打印此对象。查看它的属性(如果上面的打印代码是您现在收到的,则至少其中一个是 id)。然后再次使用:

var id = $(event.target).find('option:selected').val().(the property of the object);

当我遇到类似问题时,我会使用这种方式。希望它对你有用。 见this问题:

【讨论】:

  • 如果我 console.log($(event.target).find('option:selected').val()),我得到未定义。我还注意到,当我执行 Scrdata.find().fetch() 时,我得到一个包含 3,000 个对象的数组
  • 您是否尝试过使用 $(this).find('option:selected').val()。我正在编辑我的答案以将您链接到另一个问题,但我认为这应该可以解决您的问题。
  • 如果我把它放在事件中:'change #selectfileNew': function(event){ var id = $(event.target).find('option:selected').val();控制台.log(id); var ar = Scrdata.findOne({_id: id});控制台.log(ar);我进入控制台 ObjectID("56dab90a73176cc2deb25af5") 并且未定义。我的问题可能是我从
  • @user2690440 使用 vanilla Meteor,这不是必需的,因为 Mongo ID 将存储为字符串,而不是对象 ID。您是在使用预先存在的数据库还是从控制台添加文档?
猜你喜欢
相关资源
最近更新 更多
热门标签