我收到错误:"尝试遵循本教程时未能连接到[localhost:27017]" .
在过去的几天里,我一直在尝试用mongoDB做几个其他的node.js教程,每个教程遇到类似的问题.我发现的其他解决方案都涉及到人们在尝试连接时没有运行服务器.我在终端窗口中运行mongod,可以在localhost中查看浏览器中的信息,并通过mongo shell添加和查看记录到数据库.所有这一切似乎都有效.破坏似乎是在将任何node.js项目连接到数据库,但对于这个很新,我甚至不确定从哪里开始故障排除.
决议:我这个非常愚蠢的错误.下面是Neil建议的文件(尽管如此,查看此处有助于我排除故障并找到问题.
需要改变这条线
mongoose.connect('mongodb://localhost/MyApp');
Run Code Online (Sandbox Code Playgroud)
至
mongoose.connect('mongodb://127.0.0.1:27017/test');
Run Code Online (Sandbox Code Playgroud)
在server.js文件中.
附加说明:由于我不太明白的原因,将地址指定为127.0.0.1:工作,但localhost:没有.
我一直在拼凑几个不同教程的代码,用MEAN堆栈构建一个基本的todo应用程序,使用node,express,angular和mongodb.一个教程包括为GET,POST和DELETE操作创建api,但忽略了POST.所以,我把它作为一个挑战来编写一个将更新现有待办事项的函数.当我的功能正常工作时,我遇到了一个涉及req.params的错误,我不明白.
相关守则:
节点:
在app.js
app.put('/api/todos/:_id', ngRoutes.update);
Run Code Online (Sandbox Code Playgroud)
这导致:
exports.update = function(req, res){
var user_id = req.cookies ?
req.cookies.user_id : undefined;
Todo.findByIdAndUpdate(req.params._id,
{ $set: {
updated_at : Date.now(),
content : req.body.formText
}}, function (err, todo) {
if (err)
res.send(err)
Todo.find({ user_id : user_id}, function(err, todos) {
if (err) res.send(err);
res.json(todos);
});
});
};
Run Code Online (Sandbox Code Playgroud)
角度:
$scope.update = function(id) {
$http.put('/api/todos/' + id, this.todo)
.success(function(data) {
console.log(data);
$scope.todos = data;
})
.error(function(data) {
console.log('Error: ' + data);
});
};
Run Code Online (Sandbox Code Playgroud)
玉/ HTML:
form(ng-submit="update(todo._id)")
input.update-form(ng-show="todo.updating" type="text", …Run Code Online (Sandbox Code Playgroud)