是否可以规范化字符串?

Is it possible to normalizr string?

我正在使用 normalizr。我尝试归一化字符串,但我没有弄清楚。

const mails = [
  {
    "id": "mailId1",
    "conversationId": "conversationId1",
    "content": "Hi",
    "sender": {
      "emailAddress": { name: 'Jack', address: 'jack@example.com' }
    }
  },
  {
    "id": "mailId2",
    "conversationId": "conversationId1",
    "content": "Hello",
    "sender": {
      "emailAddress": { name: 'Rose', address: 'rose@example.com' }
    }
  }
]

const userSchema = new schema.Entity('users', {}, {
  idAttribute: value => value.emailAddress.address
});
const conversationIdSchema = new schema.Entity('conversationIds', {}, {
  idAttribute: value => value
});
const mailSchema = new schema.Entity('mails', {
  conversationId: conversationIdSchema,
  sender: userSchema
});

const normalizedData = normalize(mails, [mailSchema]);

现在上面的代码会给我下面的结果:

(注意conversationIdSchema不工作因为它是错误的)

{
  result: { mails: ['mailId1', 'mailId2'] },
  entities: {
    users: {
      'jack@example.com': { name: 'Jack', address: 'jack@example.com' }
      'rose@example.com': { name: 'Rose', address: 'rose@example.com' }
    },
    mails: {
      // ...
    }
  }
}

我希望有这样的conversationIds:

{
  result: { mails: ['mailId1', 'mailId2'] },
  entities: {
    users: {
      'jack@example.com': { name: 'Jack', address: 'jack@example.com' }
      'rose@example.com': { name: 'Rose', address: 'rose@example.com' }
    },
    mails: {
      // ...
    },
    conversationIds: ['conversationId1']
  }
}

不,这是不可能的。 Normalizr 适用于对象,而不适用于字符串。