这是我的平均代码。
const express = require('express');
const router = express.Router();
const passport = require('passport');
const jet = require('jsonwebtoken');
const Contact = require('../models/contacts');
// retrieving Data
router.get('/contacts',(req,res,next)=>{
// res.send('Retriving the contact list');
console.log('contacts page');
Contact.find(function(err, contacts){
res.json(contacts);
})
});
// to add the content
router.post('/contact',(req, res, next)=>{
// logic to add contact
let newContact = new Contact({
first_name: req.body.first_name,
last_name: req.body.last_name,
email_id: req.body.email_id,
password: req.body.password
});
Contact.addRegistry((err, contacts)=> {
if(err) {
res.json({msg:'faild to add register'});
}
else{
res.json({msg:'registry added sucessfully'});
}
});
});
// to delete the content
router.delete('/contact/:id',(req, res, next) =>{
// logic to delete contact
Contact.remove({_id:req.params.id}, function(err, result){
if(err){
res.json(err);
}
else {
res.json(result);
}
});
})
module.exports = router;
上面的文件是route.js。 以下代码来自contact.js
// Database code.
var express = require('express');
var app = express();
var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
// database schaema
var ContactSchema = new mongoose.Schema({
first_name: String,
last_name: String,
id: String,
location: String,
profile_picture_url: String,
email_id: String,
phone: String,
job_title: String,
company: String,
education: String,
password: String,
savedjobslist: {
title: [],
subtitle: []
},
appliedjobslist: {
title: [],
subtitle: []
},
failedjobslist: {
title: [],
subtitle: []
}
});
const Contact = module.exports = mongoose.model('Contact', ContactSchema);
module.exports.getUserById = function(id,callback) {
Contact.findById(id,callback);
}
module.exports.getUserById = function(username,callback) {
const query = {username: username}
Contact.findOne(query,callback);
}
module.exports.addRegistry = function(newContact,callback) {
bcrypt.genSalt(10, (err,salt) => {
bcrypt.hash(newContact,salt, (err,hash) => {
if (err) {
console.log(err);
}
newContact.password = hash;
newContact.save(callback);
});
});
}
我正试图从邮递员那里发布数据,这就是错误
时出错
并在命令提示符下显示错误
服务器在端口3000处启动,连接到27017的mongos数据库 错误:非法参数:function,string 在_async(D:\ project-1 \ back-end \ node_modules \ bcryptjs \ dist \ bcrypt.js:214:46) 在Object.bcrypt.hash(D:\ project-1 \ back-end \ node_modules \ bcryptjs \ dist \ bcry pt.js:220:13) 在bcrypt.genSalt(D:\ project-1 \ back-end \ models \ contacts.js:49:16) 在Immediate._onImmediate(D:\ project-1 \ back-end \ node_modules \ bcryptjs \ dist \ bcrypt.js:153:21) 在runCallback(timers.js:794:20) 在tryOnImmediate(timers.js:752:5) at processImmediate [as _immediateCallback](timers.js:729:5)D:\ project-1 \ back-end \ models \ contacts.js:54 newContact.save(回调); ^
TypeError:newContact.save不是函数 在bcrypt.hash(D:\ project-1 \ back-end \ models \ contacts.js:54:23) 在runCallback(timers.js:794:20) 在tryOnImmediate(timers.js:752:5) at processImmediate [as _immediateCallback](timers.js:729:5)[nodemon] app崩溃 - 在开始之前等待文件更改...
newContact.save(回调); ^ TypeError:newContact.save不是函数。 我不知道为什么会出现这个错误。
答案 0 :(得分:1)
你有一个问题:
生成的 bcrypt
因错误的参数而引发错误。您无法将对象(newContact)传递给bcrypt
。
尝试使用以下代码生成哈希:
const salt = bcrypt.genSaltSync(10);
const hashedPassword = bcrypt.hashSync(password, salt);
您可以在存储时使用pre save function of mangoose生成hashedPassword。就个人而言,我不喜欢,因为每次保存对象时都会添加新的检查
答案 1 :(得分:0)
find()将查询作为参数搜索所有传递{}
Contact.find({},function(err, contacts){
res.json(contacts);
})
答案 2 :(得分:0)
Contact.addRegistry等待newContact作为第一个参数,但是你没有在你的route.js上传递它。
我想你想做这样的事情
ContactSchema.pre('save', function(next) {
const user = this;
// generate a salt
bcrypt.genSalt(10, function(err, salt) {
if (err) return next(err);
// hash your password
bcrypt.hash(user.password, salt, function(err, hash) {
if (err) return next(err);
// store hash on the password field
user.password = hash;
next();
});
});
});