Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于Emberjs的带Nodejs的RESTful API_Javascript_Node.js_Rest_Ember.js_Coffeescript - Fatal编程技术网

Javascript 用于Emberjs的带Nodejs的RESTful API

Javascript 用于Emberjs的带Nodejs的RESTful API,javascript,node.js,rest,ember.js,coffeescript,Javascript,Node.js,Rest,Ember.js,Coffeescript,我试图在Nodejs中实现一个RESTful API服务器,该服务器将数据公开给一个Emberjs应用程序。目前,我已经创建了前端,我相信我能够与服务器通信,成功地请求和接收来自服务器的数据,但Ember向我抛出了我不理解的错误,更重要的是无法解决 到目前为止,我的代码如下(在coffeescript中): 我会发布JS,但它很混乱。无论如何,对于API,我制作了一些应该返回到Emberjs应用程序的示例数据 # # Logs Routes # module.exports = (app) -&

我试图在Nodejs中实现一个RESTful API服务器,该服务器将数据公开给一个Emberjs应用程序。目前,我已经创建了前端,我相信我能够与服务器通信,成功地请求和接收来自服务器的数据,但Ember向我抛出了我不理解的错误,更重要的是无法解决

到目前为止,我的代码如下(在coffeescript中):

我会发布JS,但它很混乱。无论如何,对于API,我制作了一些应该返回到Emberjs应用程序的示例数据

#
# Logs Routes
#
module.exports = (app) ->
    app.namespace '/v1', ->
        app.get '/logs', (req, res) ->
            res.json "logs": [ { "_id": 1, "name": "name1", "created": "2013-02-07T16:44:57.000Z", "modified": "2013-02-07T16:44:57.000Z" }, { "_id": 2, "name": "name2", "created": "2013-02-07T16:44:57.000Z", "modified": "2013-02-07T16:44:57.000Z" } ]

        app.get '/logs/:id', (req, res) ->
            res.json "log": { "_id": 1, "name": "name2", "created": "2013-02-07T16:44:57.000Z", "modified": "2013-02-07T16:44:57.000Z" }

        app.post '/logs/:id/comment', (req, res) ->
            console.log "posted"

        app.delete '/logs/:id', (req, res) ->
            console.log "removed"

        app.delete '/logs', (req, res) ->
            console.log "removed"
查看Chrome developers工具中的网络选项卡,可以发现服务器已成功响应,并且在响应预览中数据看起来正确。但是,JS控制台出现以下错误:

Error while loading route: TypeError {stack: (...), message: "Cannot call method 'forEach' of undefined"}
Uncaught TypeError: Cannot call method 'forEach' of undefined 

有人知道这可能是什么吗?

余烬有自己的方法来扩展类

您需要使用:

App.SomeController = Ember.ObjectController.extend()
而不是咖啡类声明:

class App.SomeController extends Ember.ObjectController
因此,请将代码更新为以下内容:

window.Portal = Ember.Application.create
    LOG_TRANSITIONS: true
    LOG_TRANSITIONS_INTERNAL: true
    rootElement: '#application'

Portal.ApplicationSerializer = DS.RESTSerializer.extend
    primaryKey: "_id"

Portal.ApplicationAdapter = DS.RESTAdapter.extend
    namespace: 'api/v1'

Portal.Router.map ->
    @resource 'events', ->
        @resource 'event', path: '/:event_id', ->
            @route 'edit'
        @route 'since_date', path: '/:since_date'
        @route 'create'

    @resource 'logs', ->
        @resource 'log', path: '/:log_id', ->
            @route 'comment'
        @route 'since_date', path: '/:since_date'

    @route 'dashboard', path: '/'
    @route 'settings'
    @route 'login'
    @route 'logout'

    @route 'missing', path: '/*path'

Portal.LogsRoute = Ember.Route.extend
    model: ->
        @store.find 'log'

Portal.Log = DS.Model.extend
    name: DS.attr 'string'
    created: DS.attr 'date'
    modified: DS.attr 'date'

Portal.LogsController = Ember.ArrayController.extend
    sortProperties: ['created']
    sortAscending: true

    logsCount: (->
        @get "model.length"
    ).property "@each"

我希望它有帮助

因此,您有一些未定义的东西,您正在运行forEach循环,但它不在发布的代码中,因此我们可以如何帮助您?如果我知道它是什么,我就不需要问这个问题。我想知道我发布的代码中是否有任何内容。这是客户端的一切,所以如果你想要更多,我不能给你。马上解决我的问题。谢谢。
window.Portal = Ember.Application.create
    LOG_TRANSITIONS: true
    LOG_TRANSITIONS_INTERNAL: true
    rootElement: '#application'

Portal.ApplicationSerializer = DS.RESTSerializer.extend
    primaryKey: "_id"

Portal.ApplicationAdapter = DS.RESTAdapter.extend
    namespace: 'api/v1'

Portal.Router.map ->
    @resource 'events', ->
        @resource 'event', path: '/:event_id', ->
            @route 'edit'
        @route 'since_date', path: '/:since_date'
        @route 'create'

    @resource 'logs', ->
        @resource 'log', path: '/:log_id', ->
            @route 'comment'
        @route 'since_date', path: '/:since_date'

    @route 'dashboard', path: '/'
    @route 'settings'
    @route 'login'
    @route 'logout'

    @route 'missing', path: '/*path'

Portal.LogsRoute = Ember.Route.extend
    model: ->
        @store.find 'log'

Portal.Log = DS.Model.extend
    name: DS.attr 'string'
    created: DS.attr 'date'
    modified: DS.attr 'date'

Portal.LogsController = Ember.ArrayController.extend
    sortProperties: ['created']
    sortAscending: true

    logsCount: (->
        @get "model.length"
    ).property "@each"