Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当路由包含在不同的文件中时,未定义Mongoose架构_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Javascript 当路由包含在不同的文件中时,未定义Mongoose架构

Javascript 当路由包含在不同的文件中时,未定义Mongoose架构,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,为了清理代码,我决定将所有模式和路由放入目录中的不同文件中,并在app.js中要求它们。每个模式对应于每个路由。除了我的一条路线之外,我已经让它工作了,但是对于一条特定的路线,我无法找到为什么我把它作为未定义的 以下是我在app.js(主文件)中的代码 除了我的事务路由,所有这些都可以工作。 以下是其模式: // =======================Transaction Schema "./models/transaction" var transactionSchema = ne

为了清理代码,我决定将所有模式和路由放入目录中的不同文件中,并在app.js中要求它们。每个模式对应于每个路由。除了我的一条路线之外,我已经让它工作了,但是对于一条特定的路线,我无法找到为什么我把它作为未定义的

以下是我在app.js(主文件)中的代码

除了我的事务路由,所有这些都可以工作。 以下是其模式:

// =======================Transaction Schema "./models/transaction"

var transactionSchema = new mongoose.Schema({
    job: String,
    client: String,
    deposited_by_user: String,
    transaction_info:{
        amount: mongoose.Decimal128,
        method: String,
        receipt_number: String,
        date: {type: Date}
    },
    billing_address: {
        street: String,
        city: String,
        state: String,
        zip: String
    },
    notes: String,
    date_added: {type: Date, default: Date.now}
});

module.exports = mongoose.model("Transaction", transactionSchema);  
路线:

module.exports = function(app) {

    // =======================Transaction  "./routes/transactions"

// index
app.get("/transactions", function(req, res){
    Transaction.find({}, function(err, transactions){    // It is at this line where it is telling me that "Transaction" is undefined.  However, with this code pasted into the app.js exactly the same as it is here, it works fine.
        if(err){
            console.log("error")
        } else {                                        
            for (let i = 0; i < transactions.length; i++){
                transactions[i]["transaction_info"]["new_amount"] = numberWithCommas(transactions[i]["transaction_info"]["amount"]);
            }
            res.render("transactions", {transactions: transactions});
        }
    });
});

// new
app.get("/transactions/add", async function(req, res){
 let endCollections = [];
    for (let i = 0; i < collections.length; i++){
        await collections[i].find({}, function(err, foundCollection){ 
            if (err) {
                console.log(err);
            } else {
                endCollections[i] = foundCollection;                
            }
        });
    }
    res.render("add_transaction", {users: endCollections[0], clients: endCollections[2], jobs: endCollections[3]}); 
});

// show
app.get("/transactions/:id", function(req, res){
    Transaction.findById(req.params.id, function(err, foundTransaction){
        if (err){
            console.log(err);
        } else {
            //  Redirect
            let price = numberWithCommas(foundTransaction["transaction_info"]["amount"]);
            res.render("transaction", {transaction: foundTransaction, price: price});
        }
    });
});

// edit
app.get("/transactions/:id/edit", function(req, res){
    Transaction.findById(req.params.id, async function(err, foundTransaction){
        if (err){
            console.log("error")
        } else {
            let endCollections = [];
            for (let i = 0; i < collections.length; i++){
                await collections[i].find({}, function(err, foundCollection){ 
                    if (err) {
                        console.log(err);
                    } else {
                        endCollections[i] = foundCollection;                
                    }
                });
            }       
            let deposit_date = foundTransaction["transaction_info"]["date"];
            deposit_date = moment(deposit_date).format("MM-DD-YYYY");
            res.render("edit_transaction", {transaction: foundTransaction, users: endCollections[0], clients: endCollections[2], jobs: endCollections[3], deposit_date: deposit_date});
        }
    });
});

// create
app.post("/transactions", function(req, res){ 
//  Create Transaction
    Transaction.create(req.body.transaction, function(err, newTransaction){
        if (err){
            console.log(err)
        } else {
            //  Redirect
            res.redirect("/transactions");
        }
    });
});

// update
app.put("/transactions/:id", function(req, res){ 
//  Update transaction
    Transaction.findByIdAndUpdate(req.params.id, req.body.transaction, function(err, updatedTransaction){
        if (err){
            console.log(err)
        } else {
            //  Redirect
            res.redirect("/transactions/" + req.params.id);
        }
    });
});

// delete
app.delete("/transactions/:id", function(req, res){ 
//  Delete job
    Job.findByIdAndRemove(req.params.id, function(err, deletedTransaction){
        if (err){
            console.log(err)
        } else {
            //  Redirect
            res.redirect("/transactions");
        }
    });
});

}
module.exports=函数(应用程序){
//===============================事务“/routes/transactions”
//索引
app.get(“/transactions”),函数(请求、恢复){
Transaction.find({},function(err,transactions){//在这一行,它告诉我“Transaction”是未定义的。
如果(错误){
console.log(“错误”)
}否则{
for(设i=0;i
我不认为模式是问题所在,因为当我将事务路由代码直接粘贴到app.js文件中时,一个字符一个字符地粘贴,效果很好。但是,如果将其拆分(并且代码在transactions.js文件中保持完全相同),则当我加载以Transaction.find开头的代码部分的“Transaction is undefined”页面时,会出现错误

总的来说,我无法理解为什么当路由在app.js文件中时,它工作得很好,但是当它在单独的文件中时,事务变量被认为是未定义的;尽管它的建模与我的其他路线和模式完全相同,但这一切都是如此。这里有什么我看不到的吗?谢谢。

1) 而不是:

app.get("/transactions", function(req, res){
.
.
app.get("/transactions/:id", function(req, res){
也许只是:

app.get("/", function(req, res){
.
.
app.get("/:id", function(req, res){
等等

(二)

而不是{}尝试()

看起来您正在传递一个空对象

1) 而不是:

app.get("/transactions", function(req, res){
.
.
app.get("/transactions/:id", function(req, res){
也许只是:

app.get("/", function(req, res){
.
.
app.get("/:id", function(req, res){
等等

(二)

而不是{}尝试()


看起来您正在传递一个空对象

,因此,在app.js文件中,我已经为主页设置了“/”路径。问题是,对于所有其他路线、客户、工作等。我将其设置为app.get(“/clients”)、function(req、res{,这些都可以正常工作。好的,请检查答案2感谢您对第二个答案的帮助。不幸的是,当我更改代码时,它告诉我,“(”是一个意外标记,我非常确定我需要使用{}。对象不应该是未定义的,就像我说的,当代码在主J的文件中时,它可以工作,但由于某种原因,当它在一个单独的文件中时,它不能工作。我可以确认“Transaction”变量可以在我的主app.js文件中使用。当我尝试将其传递到路由文件时,它会变得未定义。因此,在app.js f中
Transaction.find((), function(err, transactions){