我正在使用meteorJs 1.4并尝试使用mizzao:sharejs-codemirror
包但我在尝试使用时遇到此错误
无法获取tNvo2iHyPAamPeHAd的操作:MongoError:无法解析: 排序:" _id.v"。 '排序'字段必须是BSON类型的Object。
这里有一些代码:服务器端
this.Documents = new Mongo.Collection("documents");
Meteor.startup(() => {
if(!Documents.findOne()){
Documents.insert({title:"new Document"});
}
});
客户方:
this.Documents = new Mongo.Collection("documents");
Template.editor.helpers({
docid:function(){
myDocument = Documents.findOne();
if(myDocument){
return myDocument._id;
}
else{
return undefined;
}
}
});
标记:
<head>
<title>textcircle</title>
</head>
<body>
<h1>welcome to textcircle</h1>
{{> editor}}
</body>
<template name="editor">
{{> sharejsCM docid=docid id="editor"}}
</template>
有人可以向我解释这意味着什么。感谢。
答案 0 :(得分:2)
我和你的问题完全相同,我正在使用Metero 1.4.2.3。 我使用 meteor reset 重置了我的项目,它对我有用! 一旦停止服务器,您将需要在运行之前重新重置它,否则您将获得MongoError。讨厌,但这是一种修复......: - (
答案 1 :(得分:0)
我运行你的代码并且sharejs-cm没有给我任何麻烦,我确实认为在你的客户端代码上你应该在条件中使用它之前将'myDocument'定义为变量,即使流星没有抱怨... javascript会接受你给它的任何东西,并且不会总是告诉你为什么它会失败。
var myDocument = Documents.findOne();
如果您仍然遇到问题,请对显示的错误进行更具体的说明。
问候。
答案 2 :(得分:0)
我不确定这对你的情况是否完全有帮助,但显然Meteor 1.4和shareJS / CodeMirror存在一些问题(请查看回购以获取更多信息),所以这是一种解决方法。我正在运行Meteor 1.4并使用shareJS / CodeMirror构建一个应用程序,但我的代码镜像窗格/ div中的“加载...”却停滞不前(在Ubuntu上使用Firefox)。首先,我试过“流星重置”,但没有解决它。我尝试使用命令开关将Meteor作为以前的版本运行,但是MongoDB将无法启动。我尝试使用1.3.x创建一个项目并且仍然遇到同样的问题,但是当我使用1.2.1版本创建一个新的Meteor应用程序时,它工作正常并且CodeMirror窗格正常运行。
要创建新的Meteor 1.2.1应用程序,请运行:
meteor create [appName] - release 1.2.1
为了让它起作用,我从我的1.4应用程序复制了我的客户端和服务器文件,并删除了自动生成的文件。我注释掉了import语句,但除此之外它非常顺利。只需添加您正在使用的软件包,您就必须尽可能多地添加会话,但这应该可以让您启动并运行。
答案 3 :(得分:0)
此错误与您在应用程序中使用的流星版本有关。基本上它的版本不匹配。尝试在命令提示符下运行此代码。
meteor update --all-packages
这对我有用。