Angularjs 如何使用mongoose在节点服务器上以编程方式只预加载一次MongoDB文档

Angularjs 如何使用mongoose在节点服务器上以编程方式只预加载一次MongoDB文档,angularjs,node.js,typescript,express,Angularjs,Node.js,Typescript,Express,如何在节点服务器上使用mongoose在MongoDB中预加载一些数据。 我想在MongoDB的集合中添加一些默认数据/文档。 创建架构后是否可以在集合中添加数据? 从语法上讲 在我的项目中,当我的应用程序运行以填充数据库时,我有以下代码来引导我的mongodb const _ = require('lodash'); const mongoose = require('mongoose'); function _bootstrapDbModel(schemaName, schema, col

如何在
节点
服务器上使用
mongoose
MongoDB
中预加载
一些数据。
我想在
MongoDB
的集合中添加一些默认数据/文档。 创建架构后是否可以在集合中添加数据?
从语法上讲

在我的项目中,当我的应用程序运行以填充数据库时,我有以下代码来引导我的mongodb

const _ = require('lodash');
const mongoose = require('mongoose');

function _bootstrapDbModel(schemaName, schema, collectionName) {
  const model = mongoose.model(schemaName, schema, collectionName);
  // if there is not data in the collection, populate it
  model.count().then((count) => {
    if (count === 0) {
      // load prdefined data
      // which I prepare and named according to my collection name
      const data = require(`../data/${collectionName}`);
      model.insertMany(data.documents).then((results) => {
        _.map(results, (result) => { console.log(`Inserted _id:${result._id} into ${collectionName}`) });
      });
    }
  });
这就是我的数据的样子

const ObjectId = require('mongoose').Types.ObjectId;

exports.documents = [
  {
    _id: ObjectId('54d19680b51c15260b944fd5'),
    email: 'myemail@company.com',
    ....
  }
];

可以,但最好将其作为一个单独的脚本,在需要时显式调用,而不是在每次应用启动时运行查询(无论是否需要)。这是一种设计选择,取决于应用的性质和使用方式,我更喜欢自动运行它,因为我的应用程序在没有几个关键文档的情况下运行,这样对我的团队来说更快。嗨,谢谢neo,我必须调用此方法吗_bootstrapDbModel或它将被自动调用。连接成功后,您将调用它。感谢Neo帮助我,我将向上投票。请编辑上述帖子并执行此更改logger.info(collectionName+“collection为空。加载默认数据…”);const data=require('../data/'+collectionName);logger.info('Inserted _id:'+result._id+'插入'+collectionName');“第一个”无效,所以只是它对我不起作用,我的坏朋友。我从我的项目中复制了这个示例,该项目有一个全局的
记录器
模型。insertMany(data.documents),data.documents意味着您的json文件的结构是{documents:[{your:data},{your:data}]},如果您只将json文件中的数据保存为这样的数组[{your:data},{your:data}]然后只在类似此模型的方法中传递数据