【问题标题】:nestjs mongoose .insertMany is not a functionnestjs mongoose .insertMany 不是函数
【发布时间】:2021-12-10 06:44:50
【问题描述】:

我一直坚持使用“insertMany”。谁能解释如何使用这种方法? Nest 官方文档对这种认识只字未提。 https://docs.nestjs.com/techniques/mongodb

上传.model.ts

import { Schema, Document } from 'mongoose';

export const Upload = new Schema({
  name: { type: String, required: true },
  usernameCreate: { type: String, required: true },
  dateCreate: { type: Date },
});

export interface IUpload extends Document {

  readonly _id: Schema.Types.ObjectId;
  readonly name: string;
  readonly dateCreate: Date;
  readonly usernameCreate: string;
}

upload.service.ts

import { Model } from 'mongoose';
import { InjectModel } from '@nestjs/mongoose';
import { Injectable } from '@nestjs/common';
import { IUpload } from './upload.model';

@Injectable()
export class UploadService {

  constructor(
    @InjectModel('Upload') private readonly uploadModel: Model<IUpload>
  ) {}

  async create({ files, body }): Promise<IUpload> {
    const arr = files.map((file) => {
      return {
        name: file.filename,
        dateCreate: body.dateCreate,
        usernameCreate: body.usernameCreate,
      };
    });
    const createUploads = new this.uploadModel();
    return createUploads.insertMany(arr);
  }
}

终端

TypeError: createUploads.insertMany is not a function

"@nestjs/mongoose": "^7.2.0",
"mongoose": "^5.11.9",

【问题讨论】:

    标签: node.js mongoose nestjs


    【解决方案1】:

    我意识到 Document 没有这个方法。相反,我需要从 Model

    调用它
    async create({ files, body }): Promise<any> {
        const arr = files.map((file) => {
          return {
            name: file.filename,
            dateCreate: body.dateCreate,
            usernameCreate: body.usernameCreate,
          };
        });
        return this.uploadModel.insertMany(arr);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 2021-01-09
      • 2019-12-17
      • 1970-01-01
      相关资源
      最近更新 更多