[js-data] 不支持无主键吗?

Does [js-data] support no primary key?

我有希望使用没有主键的 js-data (http://www.js-data.io/docs/dsdefaults#idattribute) 管理的日志数据。

我是否需要生成密钥,或者是否可以将 js-data 配置为允许在没有 pk 的情况下访问数据?

我可以获取js数据来生成pk吗?我不需要持久化这些数据,只是想使用 js-data 功能来查询它。

示例:

  $provide.factory('syslog', ['DS', function(DS) {
    return DS.defineResource({
      name: 'log'
    });
  }]);

  $provide.factory('LoggingServices', ['$q', '$filter', '$log', 'syslog', function($q, $filter, $log, syslog) {

    function injectMockLogs () {
      syslog.inject({
        'messages': [
          {
            'time':'2016-03-29 09:32:43',
            'severity':'INFO',
            'user':'carolyn',
            'auth_type':'RADIUS',
            'method':'UI',
            'event_id':1107,
            'message':'In make_radius_request: Making radius request for user carolyn',
            'full_message':'2016-03-29 09:32:44 "info" ns [1107]: RADIUS auth:In continue_radius_auth: Starting RADIUS authentication for user carolyn @ 10.217.22.20'
          },{
            'time':'2016-03-29 09:32:44',
            'severity':'INFO',
            'user':'carolyn',
            'auth_type':'RADIUS',
            'method':'UI',
            'event_id':1107,
            'message':'In make_radius_request: Making radius request for user carolyn',
            'full_message':'2016-03-29 09:32:44 "info" ns [1107]: RADIUS auth:In make_radius_request: Making radius request for user carolyn'
          },{...

为了将数据注入存储(这是一个身份映射),数据需要具有某种唯一标识符。如果你自己不需要项目有主键也没关系,但是对于JSDa​​ta来说是必须的。

从 2.9.0 开始,将 temporary: true 选项传递给 inject 将导致为每个被注入的项目生成一个 id,尽管您当前的解决方法是一个很好的方法。