我想在我的 MongoDB 資料庫中創建一個檔案并獲取新檔案的 _id。這就是我正在做的:
const mongoose = require("mongoose");
const billingSchema = require("./models/billing");
const { ObjectId } = require("bson");
const { MongoClient } = require("mongodb");
const mongouri = "***";
var connection = mongoose.createConnection(mongouri);
var Bills = connection.model("Fatturazione", billingSchema, "Fatturazione");
exports.createBill = (b) => {
return new Promise((resolve, reject) => {
Bills.Create(b, function (err) {
if (err) {
reject(err);
} else {
console.log(mongoose.Types.ObjectId(b._id));
resolve();
}
});
});
};
這是我的架構:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
//schema define the structure of the document
const billingSchema = new Schema({
data_fatturazione: {
type: Date,
required: true,
},
data_saldo: {
type: Date,
required: false,
},
totale: {
type: Number,
required: false,
},
pagato: {
type: Boolean,
required: false,
},
});
module.exports = billingSchema;
在console.log()我想列印最后插入的檔案的 _id 但它列印一個不存在的 ID(它不對應于資料庫中最后創建的檔案的 _id)。我也試過不使用mongoose.Types.ObjectId()但它列印undefined. 我不明白問題出在哪里。
我createBill()在另一個 js 檔案中呼叫該函式,傳遞一個具有正確欄位的物件。
uj5u.com熱心網友回復:
您正在嘗試獲取傳遞給您的_idof 引數b,該引數createBill在邏輯上未定義。相反,您必須從 的結果中獲取 _id,Bill.createmongoose 回呼采用 2 個引數作為注釋中提到的 @Joe,因此您的代碼必須如下所示:
exports.createBill = (b) => {
return new Promise((resolve, reject) => {
Bills.Create(b, function (err, result) {
if (err) {
reject(err);
} else {
console.log(result._id);
resolve(result);
}
});
});
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374078.html
