2013-05-25 1 views
1

Принимая массив, такие как [ «привет», «там»] и хранения, что в Mongoose документа со схемой, такой какСравнение массивов от Мангуст с помощью ShouldJS

tags: { type: Array } 

использовать что-то типа:

Something.create({ tags: ['hello', 'there']}, cb); 

Затем с помощью ShouldJS, чтобы проверить, что документ соответствует моему поставляемому массиву я ожидал:

doc.tags.should.eql(['hello', 'there']); 

Но это не так. Если я получу теги console.log, я получаю:

[hello, there] 

Обратите внимание, что цитаты исчезли. В doc.tags действительно массив (я могу проверить InstanceOf массив), и я также использовать shouldjs с

doc.tags.should.have.keys('hello'); 
doc.tags.should.have.keys('there'); 

Любой есть идея, почему мой массив не соответствует больше?

+0

Глупый вопрос и может быть типом, но при выводе вы получите [привет, есть] или [ «привет», «там '], поскольку они не будут равны. – Modika

+0

Вы когда-нибудь получали ответ на эту проблему? У меня такая же проблема – dworrad

+0

@dworrad - нет, никогда не понял, что один из них. – cyberwombat

ответ

3

Ваш массив не настоящий json Array: это MongooseArray, с дополнительными методами.

Чтобы should.eql работу с массивом мангустов, первое использование toObject():

doc.tags.toObject().should.eql(['hello', 'there']);