你如何在Mongoose中添加一个集合?

时间:2015-08-14 20:07:42

标签: javascript node.js mongodb mongoose

我正在尝试在测试之前和之后清除我的Users集合:

android:layout_width="@dimen/image_view_width"

我也在before(function(done) { mongoose.connection.collections['users'].drop(function(err) { mongoose.connection.collections['users'].insert(user, done); }); }); after(function(done) { mongoose.connection.collections['users'].drop(done); });

中没有drop的情况下尝试过
before

我收到了这些错误:

before(function(done) {
  // mongoose.connection.collections['users'].drop(function(err) {
    mongoose.connection.collections['users'].insert(user, done);
  // });
});


after(function(done) {
  mongoose.connection.collections['users'].drop(done);
});

我的代码之前正在运行,现在却没有。如何创建集合?

更新:我在命令行中运行1) Auth API "before all" hook: TypeError: Cannot read property 'drop' of undefined at Context.<anonymous> (server/api/auth/auth.spec.js:18:45) 2) Auth API "after all" hook: TypeError: Cannot read property 'drop' of undefined at Context.<anonymous> (server/api/auth/auth.spec.js:24:45) ,现在它看起来像是集合和文档:

enter image description here

但我仍然遇到同样的问题。

更新2:这有效:

db.collection.users.insert({ foo: 'bar' })

现在,当我运行旧代码时,它也可以运行:

before(function(done) {
  // mongoose.connection.collections['users'].drop(function(err) {
  //   mongoose.connection.collections['users'].insert(user, done);
  // });
  User.remove({}).exec(function() {
    User.create(user, done);
  });
});

这里有一些奇怪的事情......

1 个答案:

答案 0 :(得分:0)

mongoose.connection.collections['users']正在返回undefined,然后您尝试在其上调用drop()。因此,您正在删除一个不存在的集合,因为您已经删除了它 - 上次after运行时。

在尝试使用它之前,请尝试检查它是否存在,例如:

var users = mongoose.connection.collections['users'];
if (users) {
    users.drop(...callback...);
}

此外,当您在终端中运行db.collection.users.insert({ foo: 'bar' })时,如果该集合不存在,则会自动创建该集合。