流星/蒙戈'findOne'函数返回“未定义”

威尔雷曼

我(显然)是初学者,第一篇文章。我正在用 Meteor 创建一个抽认卡项目。我有一个名为“cardsets”的数据库,其中包含许多与此类似的文档:

{ "_id" : "asdfg00724", 
"setTitle" : "Les animaux", 
"vocab" : [ 
[ "the dog", "le chien" ],
[ "the cat", "le chat" ], 
[ "the rabbit", "le lapin" ], 
[ "the horse", "le cheval" ] ] }

我想要做的是访问集合中的单个文档,并将文档中的每个字段分配给同名的变量,并将“词汇”字段作为数组引入。

我有一个 /imports/api/cardsets.js 包含这个:

import { Mongo } from 'meteor/mongo';
export const Cardsets = new Mongo.Collection('cardsets');

/server/main.js 包括这一行:

import '../imports/api/cardsets.js';

/client/main.js 文件包括这一行:

import { Cardsets } from '/imports/api/cardsets.js';

在 /client/main.js 文件中,我可以直接将新文档“插入”到数据库中,所以我知道在 main.js 中可以访问 Cardfiles const:

Cardsets.insert( {language: "Chinese", course: "CHIN102"});

按预期工作。(这仅用于测试)。但是,我对“findOne”所做的一切都没有产生任何结果:

var asdf = Cardsets.findOne( { _id : "asdfg00724"});
console.log("asdf = "+asdf);

在控制台中生成“asdf = undefined”。

如果我在浏览器控制台中输入“Cardsets.find({}).fetch()”,我会收到一个错误:“Cardsets is not defined”。

我也试过这个:

Cardsets.findOne({ _id : "asdfg00724"}, function(err, document) {
     console.log(document.name);
     });

但这会产生一个巨大的错误,其中包含文本“匹配错误:匹配失败:匹配.OneOf、匹配.可能或匹配.可选验证”。

我意识到我可能错过了一件非常简单的事情,但是在不间断地工作了很多天之后,我觉得是时候寻求帮助了。

米歇尔·弗洛伊德
  1. find()并且findOne()不接受回调作为参数,因此您的错误很大
  2. 您的变量(包括集合)将无法在控制台中使用,除非您处于定义这些变量的函数内的断点处,
  3. 很可能您在Cardsets客户端通过发布订阅从服务器接收到该数据之前尝试访问实施实际发布和订阅后,您将能够查看.ready()订阅状态以了解数据何时可用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章