Ошибка типа: this.insertOne - не функция, статика мангуста - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь использовать статические мангусты, поэтому я следовал документации и пока не работал, как ожидалось.Я перепробовал много способов экспорта / импорта модели.Каждый раз, когда я вижу другую ошибку, как только функции, которые я сделал, не были определены в модели, и другие ошибки типа.

это моя модель:

const mongoose = require("mongoose");
const Schema = require("../../config/DB").Schema;
const db = require("../../config/DB").db;

//schema
const MessagesSchema = new Schema({
  userID: { type: Number, required: true },
  messageText: { type: String, required: true }
});

MessagesSchema.statics.saveMessage = function(MessageData, cb) {
  this.insertOne(MessageData, (err, result) => {
    if (err) {
      console.log(err);
      cb(err, null);
    } else {
      cb(null, result);
    }
  });
};

MessagesSchema.statics.findMessages = function(userID, cb) {
  this.find({}).toArray((err, result) => {
    if (err) {
      cb(err, null);
    } else {
      cb(null, result);
    }
  });
};

module.exports = mongoose.model("Messages", MessagesSchema);

И вот как яиспользовал его в другом файле:

const MessagesModel = require("../../api/models/messages");
      MessagesModel.saveMessage(
        { userID: message.sender.id, messageText: message.text },
        (err, result) => {
          if (err) {
            console.log(err);
          } else {
            console.log(`result object length = ${Object.keys(result).length}`);
          }
        }
      );

1 Ответ

0 голосов
/ 28 февраля 2019

Модель Mongoose не имеет метода insertOne.Вместо этого используйте метод create :

this.create(MessageData, (err, result) => {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...