iam在meteor上全新,我尝试构建一个应该显示另一个Mongo数据库的数据的Meteor应用程序。它自己的应用程序可以使用自己的metor数据库。所以我发现,用MongoInternals.RemoteCollectionDriver()
来连接我的第二个数据库。
下一步是让它在流星教程中运行。但我不会从第二个数据库中获取任何数据。对于测试,从我的函数返回正确的简单数组并放入webapp。 .find()
中的表达式也应该没问题。我在Mongo控制台中测试了它。
如果与第二个数据库的连接位于if (Meteor.isClient)
或客户端/服务器部分之外,则错误" ReferenceError:MongoInternals未定义"出现。如果它在if (Meteor.isServer)
内的设置有时会在控制台中出现异常:
模板助手中的异常:。
ris_sessions@http://localhost:3000
/risdd_mongo.js?4fc7111851b4ed2182782e0a368b366cc4e89745:15:17 bindDataContext /< @http://localhost:3000
/包 /blaze.js?77c0809654ee3a10dcd5a4f961fb1437e7957d33:2693:14
......还有更多的消息
我无法看到,为什么不从第二个数据库中获取任何数据。
以下是来源:
Tasks = new Mongo.Collection("tasks");
//////////////////////
if (Meteor.isClient) {
Template.body.helpers({
tasks: function() {
return Tasks.find({}, {sort: {createdAt: -1 }});
}
,
s_sessions: function() {
return ris_sess.find( {},{description:1} ).fetch();
}
});
}
//////////////////////
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
var risdb_drv = new MongoInternals.RemoteCollectionDriver("mongodb://172.0.0.1:27017/ris");
var ris_sess = new Mongo.Collection("sessions", { _driver: risdb_drv });
});
}

<head>
<title>foo</title>
</head>
<body>
<div class="container">
<header>
<h1>todo list</h1>
<!-- add a FORM !-->
<form class="new-task">
<input type="text" name="text" placeholder="ad your task here" />
</form>
</header>
<ul>
{{#each tasks}}
{{>task}}
{{/each}}
{{#each ris_sessions}}
{{>ris_session}}
{{/each}}
</ul>
</div>
</body>
<template name="task">
<li>{{text}}</li>
</template>
<template name="ris_session">
<li>{{description}}</li>
</template>
&#13;
答案 0 :(得分:2)
如果您使用本地MongoDB服务器,请尝试更改
mongodb://172.0.0.1:27017/ris
到
mongodb://127.0.0.1:27017/ris
IP中的错字:127