1 javascript mongoose node.js express body-parser
我在登录注册用户时收到此错误当然,我在使用dotenv包来保护我的数据库加密密钥后收到此错误
但proccess.env.SECRET正在正常工作
我想我的问题就在这里:
userSchema.plugin(encrypt, {           
    secret: process.env.SECRET,         
    encryptedFields: ["password"],     
});
应用程序.js:
require("dotenv").config();
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const mongoose = require("mongoose");
const encrypt = require("mongoose-encryption");
const app = express();
app.use(express.static("public"));
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: true }));
mongoose.connect("mongodb://localhost:27017/userDB", {
    useUnifiedTopology: true,
    useNewUrlParser: true,
});
const userSchema = new mongoose.Schema({
    email: String,
    password: String,
});
                                         //_
//     encrypting password field         // | 
userSchema.plugin(encrypt, {             // | i guess problem is here
    secret: process.env.SECRET,          // |
    encryptedFields: ["password"],       //_|
});
const User = mongoose.model("User", userSchema);
错误 :
Error: Authentication code missing
    at Object.schema.methods.authenticateSync (C:\Users\Amir\Desktop\security\node_modules\mongoose-encryption\lib\plugins\mongoose-encryption.js:419:23)
    at model.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mongoose-encryption\lib\plugins\mongoose-encryption.js:239:47)
    at Kareem.execPreSync (C:\Users\Amir\Desktop\security\node_modules\kareem\index.js:115:16)
    at model.syncWrapper [as $__init] (C:\Users\Amir\Desktop\security\node_modules\kareem\index.js:232:12)
    at model.Document.init (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\document.js:513:8)
    at completeOne (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2853:12)
    at model.Query.Query._completeOne (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2094:7)
    at Immediate.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2138:10)
    at Immediate.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mquery\lib\utils.js:116:16)
    at processImmediate (internal/timers.js:456:21)
小智 6
我遇到了同样的问题,这对我有用:
使用终端导航到您的数据库(我可以看到您使用 mongo)例如:
 show dbs, use databaseName, show collections,db.databaseName.find()然后
清空你的数据库db.databaseName.drop()(如果它是重要的东西,那么将它保存在安全的地方,以便你可以再次使用它,如果你使用 Postman 应该很容易)
并重新创建您的数据库
| 归档时间: | 
 | 
| 查看次数: | 4481 次 | 
| 最近记录: |