Node.js猫鼬静态函数未调用

匿名

最近,我一直在尝试重写我的node.js express应用程序,使其更符合mvc原理。我也一直在尝试合并猫鼬。我在猫鼬模型上调用静态函数时遇到问题。

userSchema.statics.findDuplicates = function (cb) {
    console.log("Duplicates called");

    this.findOne({ email: this.email }, function(err, result){
        if (err) throw err;
        if (result) {
            cb("A user with this email has already been created.");
        } else {
            cb("");
        }
    });
}

现在的问题是,我稍后将使用此架构导出模型,因此所有这些都包含在一个文件中:

module.exports = mongoose.model('User', userSchema);

当我以后在控制器内调用此函数时(显然事先需要并初始化模型):

user.findDuplicates(function(result){

    if (result) {
        res.send("Selle e-mailiga kasutaja on juba loodud.");
        console.log("Duplicates");
    } else {
        user.save();
        res.send("Kasutaja loodud.");
        console.log("User created with password.")
    }
});

它只是永远不会被调用。Node告诉我它接受了一个帖子,但是出现了500个内部服务器错误,并且findDuplicates内部的“ Duplicates named”没有出现在控制台中。这里出了点问题,我不知道如何解决。

编辑:完整的控制器代码:

var express = require('express');
var router = express.Router();

var User = require("../models/user.js");

router.get('/', function(req, res, next) {
    res.render('users',{title: "Lisa kasutaja"});
});

router.post('/', function(req, res, next) {
    var query = req.body;
    var message = "";

    console.log("Post recieved " + JSON.stringify(query));

    if (query.password != query.repeatPassword){
        res.send("Paroolid ei ole võrdsed.");
        console.log("Passwords don't match");
    } else {
        var user = new User({
            firstName: query.firstName,
            lastName: query.lastName,
            telephone: query.telephone,
            email: query.email,
            password: query.password
        });

        console.log("User created");

        user.findDuplicates(function(result){

            if (result) {
                res.send("Selle e-mailiga kasutaja on juba loodud.");
                console.log("Duplicates");
             } else {
                user.save();
                res.send("Kasutaja loodud.");
                console.log("User created with password.")
            }
        });
    }

});

module.exports = router;
罗德里戈·梅德罗斯(Rodrigo Medeiros)

您的问题在于,您在模型实例中调用静态方法是不正确的。看到下面的区别:

// if you define a static method
userSchema.statics.findDuplicates = function (cb) {
  // do your stuff
}

// you call it this way
var User = require("../models/user.js");
User.findDuplicates(function (result) {
  // do your stuff
});

// if you define an instance method
userSchema.methods.findDuplicates = function (cb) {
  // do your stuff
};

// you call it this way (on an instance of your model)
var User = require("../models/user.js");
var user = new User({
      firstName: query.firstName,
      lastName: query.lastName,
      telephone: query.telephone,
      email: query.email,
      password: query.password
    });
user.findDuplicates(function (result) {
  // do your stuff
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js猫鼬静态函数未调用

来自分类Dev

猫鼬.save函数似乎未在node.js脚本中被调用

来自分类Dev

Node.js —猫鼬静态方法示例

来自分类Dev

Node JS,静态函数/变量最佳实践

来自分类Dev

猫鼬+ Node.js:异步问题

来自分类Dev

Node JS模块内的猫鼬查询

来自分类Dev

Node.js猫鼬回调

来自分类Dev

save()无法在猫鼬中使用静态函数

来自分类Dev

Node.js-猫鼬路径验证失败-TypeError:无法调用未定义的方法“ validate”

来自分类Dev

未定义的返回值猫鼬/ Node.js递归函数

来自分类Dev

node.js和猫鼬,如何批量插入?

来自分类Dev

使用node.js的猫鼬中的日期转换错误

来自分类Dev

Node.js猫鼬更新文档

来自分类Dev

node.js /快速路由中的猫鼬组查询

来自分类Dev

node.js链多个承诺(与猫鼬)

来自分类Dev

猫鼬(node.js),无法连接到[localhost:27017]

来自分类Dev

Node.js中的猫鼬无声崩溃

来自分类Dev

查询指针数组猫鼬Node.js

来自分类Dev

如何在Node.js中增加猫鼬的连接

来自分类Dev

在Node.js中使用猫鼬样式架构MSSQL

来自分类Dev

使用猫鼬和Express / Node Js提取数据

来自分类Dev

返回推送对象的ID node.js猫鼬

来自分类Dev

创建架构猫鼬模型(Node.js)以简化代码

来自分类Dev

在Node.js中异步foreach和猫鼬

来自分类Dev

node.js +猫鼬连接和创建问题

来自分类Dev

Node.js猫鼬模块在Heroku上失败

来自分类Dev

猫鼬只能在node.js下工作吗?

来自分类Dev

Node.js猫鼬没有方法“保存”

来自分类Dev

Node.js猫鼬在复杂查询中变得混乱