我(显然)是初学者,第一篇文章。我正在用 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、匹配.可能或匹配.可选验证”。
我意识到我可能错过了一件非常简单的事情,但是在不间断地工作了很多天之后,我觉得是时候寻求帮助了。
find()
并且findOne()
不接受回调作为参数,因此您的错误很大。Cardsets
客户端通过发布订阅从服务器接收到该数据之前尝试访问。实施实际发布和订阅后,您将能够查看.ready()
订阅状态以了解数据何时可用。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句