Mongoose save不是使用schema的函数

mongoose save is not a function using schema

本文关键字:schema 函数 save Mongoose      更新时间:2023-09-26

我得到了StripeToken。保存不是下面代码的函数错误。那是我的模型,我想知道哪里出了问题,我看还行。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var stripe_token_schema = new Schema({
    email: String,
    token: String,
    used: {type: Date, default: 0}
});
var StripeToken = module.exports = mongoose.model('stripe_token', stripe_token_schema);
module.exports.save_token = function(email,token){
    StripeToken.save({email:email,token:token}).exec(callback); //error here
}

你的模型似乎是正确的

model-schema.js:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var stripe_token_schema = new Schema({
    email: String,
    token: String,
    used: {type: Date, default: 0}
});
module.exports = mongoose.model('stripe_token', stripe_token_schema);

但是你应该改变你的.save()函数

postNewMail.js

require('mongoose');
var MailModel= require('./model-schema.js');
. . .
var newMail = {
                email: "fakemail@gmail.com",
                token: "yourGeneratedToken"
};
saveNewUser(newMail).then( function( response ){
  if(response.error){
    console.log(response.error);
  } else {
    console.log('Successfully saved ', response);
  }
});
function saveNewUser(email){
  return new Promise( function (resolve, reject) {
    // Creates a new Email based on the Mongoose schema
    var newEmail= new MailModel(email);
    newEmail.save(function(error) {
        console.log('err', error);
        if (error){
            return reject({error : 'Error while saving email'});
        }
        // If no errors are found, it responds with a JSON of the new email
        return resolve(email);
    });
  });
}

如果您有其他问题,请分享您的server.js或何时初始化MongoDB连接。