我用Mongoose在nodejs express上做了一个路由器。
当我通过邮递员发送const { clientID, orderID } = req.body;
时,
await matching.save();
运行良好。
但是之后,它会产生如下错误。
您能帮我解决这个问题吗?非常感谢。
TypeError:matching.post不是函数 在router.post(D:\ Dev \ matching \ matching \ routes \ match ing.js:24:20) 在process._tickCallback(internal / process / next_tick.js:68:7)
var express = require("express");
var router = express.Router();
const Matching = require("./../models/matching");
function wait(time) {
return new Promise(resolve => {
setTimeout(resolve, time);
});
}
router.post("/orderpost", async (req, res, next) => {
try {
const { clientID, orderID } = req.body;
const listOn = true;
const matching = new Matching({
clientID,
orderID,
listOn
});
await matching.save();
await matching.post("save", (doc, next) => {
wait(3000).then(() => {
console.log("good");
next();
});
});
res.send("good");
} catch (err) {
console.error(err);
}
});
我还添加了模式模型。
const mongoose = require(“ mongoose”);
const { Schema } = mongoose;
const MatchingSchema = new Schema({
clientID: String,
riderID: [String],
orderID: String,
listOn: Boolean
});
module.exports = mongoose.model("Matching", MatchingSchema);
答案 0 :(得分:1)
post
方法可用于Schema
而非Model
。应该在您的架构上调用它。
MatchingSchema.post("save", (doc) => {
console.log("good");
});
此外,您不需要致电wait
(不确定为什么这样做)。仅在执行save
后才调用它。
来自docs:
post
中间件在该钩子方法及其所有前置中间件完成之后执行。