gpt4 book ai didi

mongodb - sails 船。在 sails-mongo (mongodb) 上创建(和管理)索引的最佳方式

转载 作者:可可西里 更新时间:2023-11-01 10:11:10 28 4
gpt4 key购买 nike

我使用的是 sailsjs 0.12。它支持 models 上的 index 属性,也我正在使用 npm 包 Sails-hooks-mongoat创建反向索引等。

这并不理想,但它奏效了。现在,他们删除了 index 属性,并且 mongoat 目前不安全并且正在等待更新以在 Sails.js 1.0 上运行。

我想知道最好的方法:

  • 为新部署创建索引。
  • 迁移(确定?)部署更新的索引。

最佳答案

由于不允许在生产环境中运行“迁移:更改”(即使您尝试了),一种选择是在 Bootstrap 文件 (“config/bootstrap.js”) 中创建这些索引。

假设您有一个这样的用户模型:

var User = {
attributes: {
email : { type: 'string', unique: true, required: true },
username : { type: 'string', unique: true, required: true },
pin: { type: 'string'}
}
};

module.exports = User;

然后你可以像这样在引导文件中手动创建缺失的索引:

module.exports.bootstrap = async function(done) {
console.log("Loading bootstrap...")

if (process.env.NODE_ENV === 'test') {

}

if (process.env.NODE_ENV === 'production') {
console.log("CREATING DATABASE INDEX BY HAND")

// USER MODEL
var db = User.getDatastore().manager;
await db.collection(User.tableName).createIndex( { email: 1 }, {unique: true} );
await db.collection(User.tableName).createIndex( { username: 1 }, {unique: true} );
// PANDA MODEL
// db = Panda.getDatastore().manager;
// await db.collection(Panda.tableName).createIndex( { name: 1 }, {unique: true} );
}

// await initializeDatabase() // custom DB initialization...

return done();
};

索引只创建一次,后续运行不会重新创建这些索引。ensureIndex是 createIndex 函数的别名,已被弃用。

引用资料:

Waterline manager reference

MongoDB create index reference

关于mongodb - sails 船。在 sails-mongo (mongodb) 上创建(和管理)索引的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50359806/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com