CastError:对于路径“_id”处的值“users.client.module.js”,转换为ObjectId失败

时间:2016-01-29 00:30:08

标签: angularjs mongoose angularjs-service

这又是我通过MEAN堆栈开发书获得的另一个错误。我们刚刚添加了一个新用户模块和一个用户服务,允许角度使用来自经过身份验证的用户的用户信息。我在终端中收到以下文件的500错误

'/用户/ users.client.module.js'

这是随附的相关服务文件。据我所知,这是一个Mongoose错误。为什么会出现这种情况?我还没有对用户进行身份验证,这发生在索引的页面加载上。

索引控制器

<!DOCTYPE html>

<html xmlns:ng="http://angularjs.org">
<head>
    <title><%= title%></title>
</head>
<body>
    <% if (user) { %>
        <a href='/signout'>Sign Out</a>
    <% } else { %>
            <a href='/signup'>Sign-up</a>
            <a href='/signin'>Sign-in</a>
    <% } %>

    <h1><%= title%></h1>

    <section ng-view></section>

    <script type="text/javascript">
        window.user = <%- user || 'null' %>
    </script>

    <script type="text/javascript" src="/lib/angular/angular.js"></script>
    <script type="text/javascript" src="/lib/angular-route/angular-route.js"></script>
    <script type="text/javascript" src="/users/users.client.module.js"></script>
    <script type="text/javascript" src="/users/services/authentication.client.service.js"></script>
    <script type="text/javascript" src="/application.js"></script>
    <script type="text/javascript" src="/example/example.client.module.js"></script>
    <script type="text/javascript" src="/example/controllers/example.client.controller.js"></script>
    <script type="text/javascript" src="/example/config/example.client.routes.js"></script>

</body>

Index.ejs

angular.module('users',[]);

用户模块

angular.module('users').factory('Authentication', [
function(){
    this.user = window.user;

    return {
        user: this.user
    };
}
]);

用户身份验证服务

    <script type="text/javascript" src="/lib/angular/angular.js"></script>
    <script type="text/javascript" src="/lib/angular-route/angular-route.js"></script>


    <script type="text/javascript" src="/example/example.client.module.js"></script>
    <script type="text/javascript" src="/example/controllers/example.client.controller.js"></script>
    <script type="text/javascript" src="/example/config/example.client.routes.js"></script>

    <script type="text/javascript" src="/users/users.client.module.js"></script>
    <script type="text/javascript" src="/users/services/authentication.client.service.js"></script>

    <script type="text/javascript" src="/application.js"></script>

编辑 - 2016年2月2日在此订单的视图中重新订购了脚本标记,但仍然没有。

{{1}}

4 个答案:

答案 0 :(得分:4)

使用mode0模块时,本书的源代码会导致错误。在我的分析中,index.ejs中加载的静态文件/users/users.client.module.js似乎被解释为服务器路由/ users /:userId,导致使用ID user.client.module搜索MongoDB中的用户。 JS。通过将users.client.module.js语句放在express.js配置文件中的设置开头(例如语句app.use(express.static('./public')之后)但在de require routes语句之前确定已解决该问题。

注意:作者在book's github repo中添加了这一行(在结束之前,&#34;返回应用&#34;):

答案 1 :(得分:1)

如果你对 users.server.routes.js 发表评论这个代码有同样的问题并解决了:

app.route('/users')
    .post(users.create)
    .get(users.list);

app.route('/users/:userId')
    .get(users.read)
    .put(users.update)
    .delete(users.delete);

app.param('userId', users.userByID);

答案 2 :(得分:0)

重新定位

app.use(express.static('./public'));

对我不起作用。但只需重命名public/users目录即可。 (thx Bsord @ disqus)

答案 3 :(得分:0)

我遇到了同样的问题,但我是从pm2开始的。关闭pm2并手动执行node server.js后,它运行正常。我不知道为什么......